nginx: [emerg] не смог собрать server_names_hash, вы должны увеличить server_names_hash_bucket_size
Я в процессе настройки нового сервера. Http-сервер по моему выбору - NGINX. Я хочу добавить домен audi-freunde-einbeck.de
в качестве виртуального хоста. У меня там уже есть 2 других домена, и все работает нормально, но когда я пытаюсь добавить вышеупомянутый домен и запустить сервер, это дает мне Job failed. See system journal and 'systemctl status' for details.
Job failed. See system journal and 'systemctl status' for details.
Я думал, что это из-за черточек, поэтому я пробовал только другие разные домены с дефисами и без них, но не повезло. Та же ошибка Что может быть причиной этого? Я также попытался перезагрузиться, я действительно в растерянности здесь. Любая помощь будет принята с благодарностью.
Я немного поиграл и обнаружил, что, когда я добавляю только один домен, он работает. Но когда я добавляю другой домен, он останавливается. Вот вывод в статусе:
[[email protected] nginx]# systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled)
Active: failed (Result: exit-code) since Sun, 16 Dec 2012 11:38:08 +0000; 7s ago
Process: 14239 ExecStop=/usr/sbin/nginx -g pid /run/nginx.pid; -s quit (code=exited, status=1/FAILURE)
Process: 14232 ExecStart=/usr/sbin/nginx -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 14242 ExecStartPre=/usr/sbin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)
Main PID: 14234 (code=exited, status=0/SUCCESS)
CGroup: name=systemd:/system/nginx.service
Dec 16 11:38:08 netzmelone nginx[14242]: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
Dec 16 11:38:08 netzmelone nginx[14242]: nginx: configuration file /etc/nginx/nginx.conf test failed
Ответы
Ответ 1
Скорее всего, это происходит из-за длинного доменного имени. Вы можете исправить это, добавив
server_names_hash_bucket_size 64;
в верхней части вашего http
блока (вероятно, находится в /etc/nginx/nginx.conf
). Я цитирую из документации по nginx, что делать, когда появляется эта ошибка: In this case, the directive value should be increased to the next power of two
. Так что в вашем случае это должно стать 64.
Ссылка: http://nginx.org/en/docs/http/server_names.html#optimization
Ответ 2
- Откройте
/etc/nginx/nginx.conf
с правами на запись - раскомментируйте или добавьте
server_names_hash_bucket_size 64;
- перезапустить nginx
sudo service nginx restart
Если ошибка все еще сохраняется:
- увеличьте
server_names_hash_bucket_size
в шагах 128, 256, 512 и т.д. (увеличиваясь на степень 2 каждый раз). например. server_names_hash_bucket_size 128;
- перезапускайте nginx каждый раз, пока ошибка не исчезнет (ошибка всегда будет одинаковой независимо от того, какое значение вы уже установили)
Ответ 3
Возможно, это звучит немного случайно, но это может помочь новичку nginx, как я.
Я получил эту ошибку, когда я остановился ;
в строке server_name
.
имел:
server_name www.mydomain.com
access_log /var/log/nginx/www.mydomain.com;
исправить:
server_name www.mydomain.com;
access_log /var/log/nginx/www.mydomain.com;
Все директивы в конфигурационных файлах nginx должны заканчиваться символом ;
Я часто подчеркиваю ;
в моем файле перед сохранением/загрузкой в качестве окончательной проверки после редактирования.
Ответ 4
или вы можете просто использовать ваше доменное имя внутри вашего server_name.