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

Перенаправление IP AKS от модуля Nginx к контроллеру Ingress не работает

У нас есть приложение SaaS, которое отлично работает на Azure IaaS внутри виртуальных машин. Наш интерфейс размещен на Nginx, и у нас есть много правил на основе местоположения, которые перенаправляют / проксируют трафик на наш внутренний API-интерфейс внутреннего интерфейса, который работает на IIS. У нас также есть установка модуля davext на nginx и правила WebDAV, которые проксируют трафик к нашему тому же внутреннему API.

Одно из наших требований - сохранить общедоступный IP-адрес пользователя и перенаправить его на внутренний внутренний API-интерфейс (IIS).

Наша текущая настройка IaaS, в которой переадресация IP работает нормально:

Шлюз приложений Azure> Виртуальные машины Nginx> Внутренний балансировщик нагрузки Azure> Внутренние серверные API-интерфейсы виртуальных машин IIS

Конфигурация нашей виртуальной машины Nginx, относящаяся к сохранению IP:

set_real_ip_from 10.X.X.0 / 24; # подсеть, в которой у нас есть шлюз приложений real_ip_header X-Forwarded-For;

расположение / api / {access_log /var/log/nginx/api.log;

proxy_pass https: //X.X.X.X/api/$ request_uri;

proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ remote_addr; proxy_set_header X-Forwarded-Host $ remote_addr; }

Мы оцениваем AKS (службу Azure Kubernetes), но мы не можем перенаправить фактический общедоступный IP-адрес пользователя из модулей Nginx во внутренние модули API серверной части. Вот наш поток трафика в AKS:

Контроллер входа Nginx с общедоступным IP-адресом> Модули Nginx> Контроллер входа Nginx с внутренним IP-адресом> Модули IIS

мы получаем общедоступный IP-адрес до второго прыжка (модули Nginx), но когда эти модули прокси-трафика передают внутренний API-интерфейс, который проходит через входной контроллер с внутренним IP-адресом, фактический общедоступный IP-адрес пользователя исчезает, и мы видим IP-адрес модулей nginx.

Ниже приведена конфигурация, относящаяся к сохранению IP-адресов на наших входных контроллерах: nginx.ingress.kubernetes.io/cors-allow-headers: «X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Port, X-Forwarded- Префикс"

Связанные службы также имеют следующие настройки: externalTrafficPolicy: Local

Соответствующая конфигурация модулей Nginx приведена ниже:

set_real_ip_from 10.X.X.0 / 24; # AKS subnet real_ip_header X-Forwarded-For;

расположение / api / {access_log /var/log/nginx/api.log;

proxy_pass https: //X.X.X.X/api/$ request_uri;

proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ remote_addr; proxy_set_header X-Forwarded-Host $ remote_addr; }

Любая помощь будет оценена.

Заранее спасибо.