У нас есть приложение 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; }
Любая помощь будет оценена.
Заранее спасибо.