HAPROXY+NGINX = Obtener IP Real

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *