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