У меня есть следующий виртуальный хост
server
{
server_name abc.example.com;
root /var/www/test/;
index index.html;
}
При запуске nginx -s reload
я получаю следующую ошибку:
nginx: [emerg] не смог собрать server_names_hash, вам нужно увеличить server_names_hash_bucket_size: 32
То же самое происходит для любого server_name, которое имеет 15 или более символов.
Если я установлю имя_сервера ab.example.com
(или любое имя длиной менее 15 символов), проблема перестанет проявляться.
Чтобы исправить это, я добавил следующее /etc/nginx/nginx.conf
(это не было определено ранее):
server_names_hash_bucket_size 64;
Установка его на 33 работала также, но не 32.
Почему максимальная длина по умолчанию составляет 14 символов для имени_сервера?
Это ограничение накладывается настройками по умолчанию nginx или системой, в которой он работает?
Как имя_сервера 15 влияет на максимальный размер хеш-памяти? (в системе определено только 4 виртуальных хоста)
источник
grep "" /sys/devices/system/cpu/cpu?/cache/index?/coherency_line_size
?/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size:64
/sys/devices/system/cpu/cpu0/cache/index1/coherency_line_size:64
/sys/devices/system/cpu/cpu0/cache/index2/coherency_line_size:64
Ответы:
Эта ошибка возникает, когда
server_name
она слишком велика, чтобы поместиться в корзину хэшей .Значение по умолчанию для
server_names_hash_bucket_size
выбирается в зависимости от размера строки кэша ЦП сервера. В частности, он должен быть настолько малым, насколько это возможно, чтобы уменьшить количество кеш-памяти процессора , так какserver_name
s нужно искать при каждом запросе.Что касается того, почему вы ограничены 14 символами вместо ожидаемых 31, я подозреваю одну из двух возможностей:
iconv
чтобы это исправить.источник
Длина по умолчанию должна быть автоматически определена во время запуска, в зависимости от используемых имен серверов, но она также должна обновляться во время
reload
операции. Посмотрите, работает ли он без ручной настройки размера корзины, но с перезагрузкой вместо перезагрузки.См. Http://nginx.org/en/docs/hash.html, чтобы узнать, как определяются размеры хеша, и http://nginx.org/en/docs/http/server_names.html, чтобы прочитать о хешах, используемых для имен серверов.
источник