Meu ambiente possui solicitações de usuário passando por vários sistemas:
[Cliente] -> [ELB] ---> [nginx] -> [web]
(ELB = AWS Elastic Load Balancer)
Graças a esta resposta , tenho nginx determinação e passando o endereço IP do cliente correto para os servidores a montante (web) com o X-Forwarded-For
e X-Real_IP
cabeçalhos. A configuração nginx relevante:
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;
Meu problema é esse, o módulo IP real no nginx substitui a $remote_addr
variável existente pelo resultado de seus X-Forwarded-For
cálculos. Isso me dá o IP do cliente de origem, mas estou perdendo o endereço IP do sistema que realmente enviou a solicitação ao proxy (ou seja, o ELB).
No geral, ter o IP do cliente é mais importante para mim, mas eu gostaria de poder registrar toda a cadeia de solicitações para entender (e depurar) como o tráfego está fluindo. Atualmente, só posso ter o nginx registrando o IP do cliente, seu próprio IP e o IP do servidor upstream. Gostaria de poder registrar o IP do ELB também.
Vejo X-Istence fez a mesma pergunta em 2013, com pouca sorte. Alguma coisa mudou ou melhorou desde então?
fonte
$realip_remote_addr
. Funciona lindamente. Estava realmente tentando obter proxy_protocol ao trabalho e veio sobre as notas de patch nginx para 1.9.7