referer_hash_bucket_size

Директива `referer_hash_bucket_size` задаёт размер корзин хеш-таблицы, используемых для хранения HTTP заголовков Referer в NGINX. — NGINX HTTP Core

referer_hash_bucket_size
serverlocation
Синтаксисreferer_hash_bucket_size size;
По умолчанию64
Контекстserver, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `referer_hash_bucket_size` является важным параметром конфигурации для управления хранением заголовков Referer в NGINX. Она определяет размер корзин для хеш-таблицы, в которой сохраняются Referer, что особенно полезно в условиях высокой нагрузки, когда размер заголовков запросов может существенно влиять на производительность. Оптимизируя размер корзин, вы можете улучшить эффективность операций хеширования, минимизировать коллизии и обеспечить более быструю обработку записей Referer. Эту директиву можно задавать в контекстах `http`, `server` или `location`, что даёт гибкость настройки в зависимости от потребностей приложения. Указываемое значение должно быть степенью двойки или близким к оптимальному размеру, соответствующему ожидаемому числу Referer. Для достижения оптимальной производительности значение должно быть внимательно подобрано с учётом архитектуры системы и ожидаемых объёмов трафика, поскольку неверно выбранное значение может привести к увеличенному расходу памяти или неэффективной работе хеш-таблицы, что повлияет на общую производительность. Настройка этой директивы может быть критична после анализа производительности сервера, особенно при наличии большого числа уникальных значений заголовков Referer. По сути, `referer_hash_bucket_size` играет ключевую роль как в управлении памятью, так и в скорости отклика при обработке Referer, повышая устойчивость NGINX как веб-сервера.

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

http {
    referer_hash_bucket_size 128;
}

Установка слишком маленького размера корзины может вызвать коллизии хэшей и ухудшить производительность.

Желательно, чтобы значения были степенями двойки для оптимальной эффективности.

Изменение этого значения после установления высокой нагрузки без надлежащего тестирования может негативно повлиять на работу сервисов.