Mi entorno tiene solicitudes de usuario que pasan por varios sistemas:
[Cliente] -> [ELB] ---> [nginx] -> [web]
(ELB = AWS Elastic Load Balancer)
Gracias a esta respuesta , tengo nginx determinando y pasando la dirección IP correcta del cliente a los servidores ascendentes (web) con los encabezados X-Forwarded-For
y X-Real_IP
. La configuración de 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;
Mi problema es este, el módulo Real IP en nginx reemplaza la $remote_addr
variable existente con el resultado de sus X-Forwarded-For
cálculos. Esto me da la IP del cliente de origen, pero estoy perdiendo la dirección IP del sistema que realmente envió la solicitud al proxy (es decir, el ELB).
En general, tener la IP del cliente es más importante para mí, pero me gustaría poder registrar la cadena completa de solicitudes para poder entender (y depurar) cómo fluye el tráfico. Actualmente, solo puedo hacer que nginx registre la IP del cliente, su propia IP y la IP del servidor ascendente. Me gustaría poder registrar el IP de ELB también.
Veo que X-Istence hizo la misma pregunta en 2013, con poca suerte. ¿Ha cambiado o mejorado algo desde entonces?
fuente
$realip_remote_addr
. Funciona muy bien En realidad estaba tratando de hacer que proxy_protocol funcionara y encontré las notas del parche nginx para 1.9.7