Habilite X-Real-IP y X-Forwarded-For en Nginx

Habilite X-Real-IP y X-Forwarded-For en Nginx

¿Cómo habilito X-Real-IP y X-Forwarded-For en Nginx? Actualmente tengo lo siguiente para obtener IP reales en la red Docker.

set_real_ip_from  172.18.0.0/32;
real_ip_header    X-Real-IP;
real_ip_recursive on;

También me gustaría pasar IP reales de Cloudflare a contenedores Docker. ¿Cómo uso X-Real-IP y X-Forwarded-For en la misma configuración, un conjunto de IP para X-Real-IP y un conjunto de IP para X-Forwarded-For?

Respuesta1

Si está intentando obtener IP reales detrás de CloudFlare, debería usar su propio encabezado, CF-Connecting-IP. Debes ignorar los otros encabezados si no los has generado tú mismo, ya que el cliente puede falsificarlos.

real_ip_header CF-Connecting-IP;

Respuesta2

  1. Intentarmapahacerles ping (no funciona):

    map $remote_addr $real_header {
      default X-Real-IP;
      172.18.0.1 X-Forwarded-For;
    }
    
    server {
      real_ip_header $real_header;
    }
    
  2. Intente separar esas transmisiones en diferentes servidores. Según el manual, real_ip_header se puede configurar por servidor o ubicación, por lo que puede:

    server {
      listen :8080;
      real_ip_header X-Real-IP;
      include "/all/other/stuff.conf";
    }
    
    server {
      listen :8081;
      real_ip_header X-Forwarded-For;
      include "/all/other/stuff.conf";
    }
    
  3. Jugar con ubicaciones incluirá mucho más azúcar de sintaxis para separarlas y probablemente necesitarás usar if, pero sondemonio. Pero creo que es muy posible crear dos ubicaciones internas con una reescritura interna manual entre esas dos. Esto estará totalmente oculto para el usuario.

  4. Supongo que jugar con Lua también podría ayudar, pero prueba primero las sugerencias anteriores.

información relacionada