Habilitar ambos X-Real-IP e X-Forwarded-For no Nginx

2

Como faço para ativar o X-Real-IP e o X-Forwarded-For no Nginx? Atualmente, tenho o seguinte para obter IPs reais na rede do 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 do Docker também. Como uso tanto o X-Real-IP quanto 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?

    
por j7an 10.03.2018 / 07:36

2 respostas

0

  1. Tente mapear pingá-los (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;
    }
    
  2. Tente separar esses fluxos em diferentes servidores. Conforme manual real_ip_header pode ser definido por servidor ou localização, assim você pode:

    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. Jogar com locais incluirá muito mais açúcar de sintaxe para separá-los e você provavelmente precisará usar if's, mas eles são mal . Mas eu acho que é bem possível criar dois locais internos com uma reescrita interna manual entre os dois. Isso será totalmente escondido do usuário.

  4. Suponho que brincar com Lua também pode ajudar, mas, por favor, tente primeiro sugestões anteriores.

por 10.03.2018 / 11:54
0

Se você está tentando obter IPs reais por trás do CloudFlare, deve usar o próprio cabeçalho, CF-Connecting-IP. Você deve ignorar os outros cabeçalhos se você não os gerou, pois eles podem ser falsificados pelo cliente.

real_ip_header CF-Connecting-IP;
    
por 05.11.2018 / 22:28