Moje środowisko ma żądania użytkowników przesyłane przez wiele systemów:
[Klient] -> [ELB] ---> [nginx] -> [web]
(ELB = AWS Elastic Load Balancer)
Dzięki tej odpowiedzi mam Nginx określający i przekazujący poprawny adres IP klienta do serwerów nadrzędnych (sieci) z nagłówkami X-Forwarded-For
i X-Real_IP
. Odpowiednia konfiguracja nginx:
real_ip_header X-Forwarded-For;
set_real_ip_from 10.0.0.0/8;
real_ip_recursive on;
proxy_set_header X-Real-IP $remote_addr;
Mój problem polega na tym, że moduł Real IP w nginx zastępuje istniejącą $remote_addr
zmienną wynikiem jej X-Forwarded-For
obliczeń. Daje mi to początkowy adres IP klienta, ale tracę adres IP systemu, który faktycznie wysłał żądanie do proxy (tj. ELB).
Ogólnie rzecz biorąc, posiadanie adresu IP klienta jest dla mnie ważniejsze, ale chciałbym móc rejestrować pełny łańcuch żądań, aby móc zrozumieć (i debugować) przepływ ruchu. Obecnie mogę tylko nginx rejestrować adres IP klienta, własny adres IP i adres IP serwera nadrzędnego. Chciałbym również móc zarejestrować adres IP ELB.
Widzę, że X-Istence zadało to samo pytanie w 2013 roku, ale przy odrobinie szczęścia. Czy od tego czasu coś się zmieniło lub poprawiło?
$realip_remote_addr
. Działa pięknie. Faktycznie próbuje proxy_protocol do pracy i natknął się na nginx notatki patch do 1.9.7