Подтвердить что ты не робот

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
4b9b3361

Ответ 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.