ip_hash

Директива `ip_hash` обеспечивает сохранение сессий, направляя запросы с одного и того же IP-адреса клиента на один и тот же сервер в группе upstream.

Синтаксисip_hash;
По умолчаниюnone
Контекстupstream
Аргументыnone

Описание

Директива ip_hash используется в контексте блока upstream в конфигурации NGINX для обеспечения стабильного балансирования нагрузки на основе IP-адресов клиентов. Включив ip_hash, NGINX вычисляет хеш от IP-адреса клиента, чтобы определить, какой сервер внутри группы upstream должен обработать запрос. Это означает, что пользователь с одним и тем же IP будет всегда направляться на один и тот же бэкенд-сервер в течение сессии, что позволяет поддерживать состояние сессий без необходимости привязки через файлы cookie.

Маршрутизация запросов осуществляется применением хеш-функции к IP-адресу клиента, что гарантирует, что IP-адреса последовательно разрешаются в один и тот же сервер. Если запрос исходит от другого клиента (по IP), он может быть направлен на другой сервер из набора upstream. Эта возможность особенно полезна для поддержания согласованности сессий в приложениях, которые сами по себе не управляют сессиями и чувствительны к выбору сервера. Следует иметь в виду, что в окружениях, где клиенты находятся за прокси или балансировщиками нагрузки, потребуется корректная конфигурация real_ip или соответствующая обработка, чтобы использовать правильный IP-адрес клиента для хеширования.

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

upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

Убедитесь, что upstream servers способны обрабатывать сессии независимо, так как ip_hash не разделяет состояние между серверами.

Использование ip_hash может привести к неравномерному распределению нагрузки между серверами, особенно в случаях, когда некоторые IPs отправляют больше трафика, чем другие.

← Ко всем директивам