Назад | Перейти на главную страницу

Добавить источник IP в заголовок nginx

У меня ситуация с ip_hash на nginx для липкой сессии, где он всегда направляет трафик только на один сервер. Nginx работает за балансировщиком нагрузки Google Cloud, из nginx он попадает в балансировщик нагрузки GC Kubernetes моего приложения, прежде чем фактически перейти к одному из модулей.

У меня возникла мысль, что IP-адреса всех пользователей были замаскированы балансировщиком нагрузки GC, чтобы nginx распознал их как один источник.

Мне сказали, что мы можем добавить исходный IP-адрес пользователя в заголовок nginx, чтобы балансировщик нагрузки мог распознать их как разных пользователей. Как я могу подойти к одному? Или есть другое решение?

Если вы используете балансировку сетевой нагрузки (с целевыми пулами), балансировщик нагрузки сохраняет IP. Что происходит, так это то, что Kubernetes меняет исходный IP с IP-адресами кластера / узла.

В Kubernetes есть функция сохранения исходного IP-адреса клиента. Вы можете проверить в документации для как сохранить исходный IP-адрес клиента в службах с помощью Type = LoadBalancer (Балансировка сетевой нагрузки).

Используйте proxy_set_header, чтобы добавить исходный IP-адрес в заголовок NGINX. Ознакомьтесь со следующими примерами:

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-Host $remote_addr;

proxy_set_header X-Forwarded-For $remote_addr;

Таким же образом вы можете добавить свой IP-адрес в заголовок NGINX.

Настроить привязка сеанса во время первоначальной настройки целевой пул установив для него один из следующих значения не по умолчанию чтобы обеспечить желаемый уровень липкая сессия:

CLIENT_IP

Двухкортежное хеширование, использующее IP-адреса источника и назначения. Все подключения от клиента будут завершаться одним и тем же экземпляром независимо от протокола, пока экземпляр остается работоспособным.

CLIENT_IP_PROTO

Трехкортежное хеширование, в котором используются IP-адреса источника и назначения, а также протокол. Все соединения от клиента будут выполняться в одном экземпляре, если они используют один и тот же протокол и экземпляр остается работоспособным.

Лакшман Диваакар относится к конфигурации привязки сеанса как к неизменяемому набору атрибутов «при создании» целевой пул. Его обзор доступных функций балансировки нагрузки Cloud Compute может быть интересен для вас: Балансировщик сетевой нагрузки по сравнению с балансировщиком нагрузки HTTP (ов).