ip_hash
Директива `ip_hash` обеспечивает сохранение сессий, направляя запросы с одного и того же IP-адреса клиента на один и тот же сервер в группе upstream. — NGINX HTTP Core
Описание
Директива `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 отправляют больше трафика, чем другие.