Introducción
Tenemos una plataforma montada de la siguiente manera:
INTERNET <-> HAPROXY <-> NGINX
Cuando una persona accede a la plataforma y revisamos los logs de NGINX vemos que nos está llegando la IP del balanceador. Lo que queremos es que llegue directamente la IP de la persona que se conecta.
Por lo tanto nuestro objetivo es que en NGINX llegue la IP pública que accede a nuestra plataforma/portal.
Configuraciones
HAPROXY
Lo primero que debemos hacer es configurar nuestro HAPROXY, vamos a poner una configuración de ejemplo usada:
frontend test_http bind *:80 option forwardfor default_backend bk_test_http backend bk_test_http mode http balance source server server01 10.192.28.60:80 cookie node1 check inter 5000 fall 3 rise 2
Comprobamos que la sintaxis es correcta:
haproxy -f /etc/haproxy/haproxy.cfg -c
Reiniciamos el servicio:
systemctl restart haproxy
Modo debug del HAPROXY
haproxy -f /etc/haproxy/haproxy.cfg -d
En este punto lo único que hemos añadido extra ha sido:
option forwardfor
NGINX
Lo segundo es configurar nuestros frontales NGINX para que recojan la IP real. Para ello lo que haremos será configurar nuestros fichero «nginx.conf» con lo siguiente:
http { ... set_real_ip_from 10.192.28.5; real_ip_header X-Forwarded-For; ... }
Comprobamos que la configuración es correcta:
nginx -t
Reiniciamos el Servicio
systemctl restart nginx
Como podéis ver hemos añadido los parámetros set_real_ip_from (Aquí debemos indicar la IP de nuestro HAPROXY) y real_ip_header. Con esto conseguimos que en los acces_log de NGINX llegue la IP real del cliente.