Ошибка NGINX - Число имен серверов или их длине - could not build the server_names_hash
Исправление ошибки в числе имен серверов или их длине
Если задано большое число имён серверов, либо заданы необычно длинные имена, возможно потребуется скорректировать значения директив
server_names_hash_max_size
и server_names_hash_bucket_size
на уровне http
.
Значение по умолчанию директивы server_names_hash_bucket_size
может быть равно 32
, 64
, либо другой величине, в зависимости от размера строки кэша процессора.
Если значение по умолчанию равно 32
и имя сервера задано как “too.long.server.name.example.org”
, то nginx откажется запускаться и выдаст сообщение об ошибке:
could not build the server_names_hash,
you should increase server_names_hash_bucket_size: 32
В этом случае следует увеличить значение директивы до следующей степени двойки:
http { server_names_hash_bucket_size 64; ...
Если задано большое число имён серверов, то будет выдано другое сообщение об ошибке:
could not build the server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size: 32
В таком случае сначала следует попробовать установить server_names_hash_max_size
в величину, близкую к числу имён серверов, и только если это не поможет или время запуска nginx станет неприемлемо большим, следует попытаться увеличить server_names_hash_bucket_size
.
Если сервер является единственным сервером для слушающего порта, то nginx
не будет проверять имена сервера вообще (а также не будет строить хэш-таблицы для слушающего порта).
За одним исключением: если имя сервера задано регулярным выражением с выделениями, то nginx’у придётся выполнить это выражение, чтобы получить значения выделений.