server_names_hash_max_size

Директива 'server_names_hash_max_size' задаёт максимальный размер таблицы хешей, используемой для хранения имён серверов в NGINX. — NGINX HTTP Core

server_names_hash_max_size
http
Синтаксисserver_names_hash_max_size size;
По умолчанию512
Контекстhttp
МодульNGINX HTTP Core
Аргументы1

Описание

Директива 'server_names_hash_max_size' в NGINX используется для указания максимального размера таблицы хешей, которая хранит имена серверов. Это важный параметр, поскольку NGINX полагается на хеширование имён серверов для эффективной маршрутизации входящих запросов в соответствующий серверный блок. Когда количество имён серверов превышает этот предел, механизм хеширования может стать менее эффективным, что может привести к ухудшению производительности при обработке запросов. При настройке этой директивы учитывайте, что если количество указанных имён серверов превышает заданный 'server_names_hash_max_size', NGINX автоматически увеличит размер таблицы хешей, что может привести к увеличению использования памяти. Также важно отметить, что хотя эта директива определяет максимальный размер таблицы хешей, фактический размер, используемый NGINX во время работы, может варьироваться в зависимости от числа имён серверов и особенностей алгоритма хеширования. Правильная настройка этого значения может помочь обеспечить оптимальную производительность NGINX, особенно в средах с большим количеством виртуальных хостов или сложными конфигурациями. Эта директива может использоваться в контексте 'http' в конфигурационных файлах NGINX и будет влиять на все серверные блоки в пределах заданной области. Для администраторов, ответственных за сайты с высоким трафиком или имеющих большое количество конфигураций серверов, внимательное рассмотрение этой директивы может минимизировать накладные расходы на поиск при обработке запросов.

Пример конфига

http {
    server_names_hash_max_size 1024;
}

Установка слишком низкого значения может привести к коллизиям server name и к снижению производительности из-за чрезмерной memory reallocation.

Server names должны быть определены до использования этой directive, чтобы hash table имела правильный размер.