
Como habilito o X-Real-IP e o X-Forwarded-For no Nginx? Atualmente tenho o seguinte para obter IPs reais na rede Docker.
set_real_ip_from 172.18.0.0/32;
real_ip_header X-Real-IP;
real_ip_recursive on;
Eu também gostaria de passar IPs reais do Cloudflare para contêineres Docker. Como uso o X-Real-IP e o X-Forwarded-For na mesma configuração, um conjunto de IPs para o X-Real-IP e um conjunto de IPs para o X-Forwarded-For?
Responder1
Se você está tentando obter IPs reais por trás do CloudFlare, você deve usar seu próprio cabeçalho, CF-Connecting-IP. Você deve ignorar os outros cabeçalhos se não os tiver gerado, pois eles podem ser falsificados pelo cliente.
real_ip_header CF-Connecting-IP;
Responder2
Tentarmapafaça ping neles (não funciona):
map $remote_addr $real_header { default X-Real-IP; 172.18.0.1 X-Forwarded-For; } server { real_ip_header $real_header; }
Tente separar esses fluxos em servidores diferentes. Conforme manual, real_ip_header pode ser definido por servidor ou local, para que você possa:
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"; }
Brincar com locais incluirá muito mais açúcar de sintaxe para separá-los e você provavelmente precisará usar if's, mas eles sãomal. Mas acho que é bem possível criar dois locais internos com uma reescrita interna manual entre os dois. Isso ficará totalmente oculto do usuário.
Suponho que brincar com Lua também possa ajudar, mas tente primeiro as sugestões anteriores.