Meu ambiente tem solicitações de usuários passando por vários sistemas:
[Cliente] - > [ELB] --- > [nginx] - > [web]
(ELB = Balanceador de carga elástico da AWS)
Graças a essa resposta , eu tenho o nginx determinando e passando o endereço IP do cliente correto para os servidores upstream (web) com os cabeçalhos X-Forwarded-For
e X-Real_IP
. A configuração relevante do 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;
Meu problema é que o módulo IP Real em nginx substitui a variável $remote_addr
existente com o resultado de seus cálculos X-Forwarded-For
. 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 gostaria de poder registrar a cadeia completa de solicitações para que eu possa entender (e depurar) como o tráfego está fluindo. Atualmente, só posso ter o log nginx do IP do cliente, seu próprio IP e o IP do servidor upstream. Eu gostaria de poder registrar o IP do ELB também.
Eu vejo X-Istence pediu o mesmo pergunta em 2013, com pouca sorte. Alguma coisa mudou ou melhorou desde então?