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. Я думал, что это из-за черточек, поэтому я пробовал только другие разные домены с дефисами и без них, но не повезло. Та же ошибка Что может быть причиной этого? Я также попытался перезагрузиться, я действительно в растерянности здесь. Любая помощь будет принята с благодарностью.

Я немного поиграл и обнаружил, что, когда я добавляю только один домен, он работает. Но когда я добавляю другой домен, он останавливается. Вот вывод в статусе:

[root@netzmelone 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

6 ответов

Решение

Скорее всего, это происходит из-за длинного доменного имени. Вы можете исправить это, добавив

server_names_hash_bucket_size  64;

в верхней части вашего http блока. Я цитирую из документации 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

  • открыть /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 каждый раз, пока ошибка не исчезнет (ошибка всегда будет одинаковой независимо от того, какое значение вы уже установили)

Возможно, это звучит немного случайно, но это может помочь новичку 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 должны заканчиваться ;
Я часто подчеркиваю ;s в моем файле перед сохранением / загрузкой в ​​качестве окончательной проверки после редактирования.

Вот как я решил:

cd /etc/nginx/

sudo nano nginx.conf
  • - раскомментируйте или добавьте server_names_hash_bucket_size 64 -
  • --увеличить server_names_hash_bucket_size "164" -
cd /etc/nginx/sites-available/

sudo nginx -t

  • если все в порядке
sudo service nginx restart

откройте файл nginx.conf, он находится в этом каталоге /etc/nginx/nginx.conf, это глобальная конфигурация nginx.

vi в nginx.conf и добавьте эту строку в блок http «server_names_hash_bucket_size 64;»

Возможно, у вас нет проблем с размером ведра. Это происходит, если вы ранее создали символическую ссылку в /etc/nginx/sites-enabled/ и пытаетесь обновить или переустановить ssl с помощью certbot. удалите файл из /etc/nginx/sites-enable/your-domain-conf-file и повторно запустите команду certbot, как показано ниже.

       sudo certbot --nginx -d your-domain-name.com 

Он должен работать.

Другие вопросы по тегам