Como registrar os IPs reais dos clientes ao usar o CloudFlare + Nginx + Apache

3

Estou preso há dias tentando resolver esse problema, espero que alguém possa me ajudar com isso.

Eu tenho Nginx como um proxy reverso na frente do Apache . Eu consigo registrar os IPs reais dos clientes usando mod_rpaf module ao usar Nginx + Apache somente sem CloudFlare . Decidi então adicionar CloudFlare ao meu servidor. Agora os IPs CloudFlare estão sendo exibidos em vez dos IPs dos clientes. Eu tenho o Nginx RealIP Module instalado, eu tentei várias configurações mas não resolvi o problema. Em seguida, instalei o mod_cloudflare , que deveria registrar os IPs dos clientes reais no Apache , conforme descrito em CloudFlare , mas isso também não resolveu o problema.

Primeiro, as configurações de trabalho do Nginx + Apache são as seguintes:

Configuração do Nginx:

proxy_set_header   X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
real_ip_header     X-Client-IP;

mod_rpaf Configuração:

LoadModule rpaf_module      /usr/local/apache/modules/mod_rpaf-2.0.so
<IfModule mod_rpaf-2.0.c>
    RPAFenable On
    RPAFproxy_ips 127.0.0.1 #Proxy IPs
    RPAFsethostname On
    RPAFheader X-Client-IP
</IfModule>

Até agora, os IPs reais dos clientes são exibidos corretamente.

If anyone looking for logging real clients' IPs, you can use the above configurations.

Em segundo lugar, usando CloudFlare com Nginx + Apache:

Configuração do Nginx:

proxy_set_header   X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
set_real_ip_from   204.93.240.0/24;
set_real_ip_from   204.93.177.0/24;
set_real_ip_from   199.27.128.0/21;
set_real_ip_from   173.245.48.0/20;
set_real_ip_from   103.21.244.0/22;
set_real_ip_from   103.22.200.0/22;
set_real_ip_from   103.31.4.0/22;
set_real_ip_from   141.101.64.0/18;
set_real_ip_from   108.162.192.0/18;
set_real_ip_from   190.93.240.0/20;
set_real_ip_from   188.114.96.0/20;  
set_real_ip_from   197.234.240.0/22;
set_real_ip_from   198.41.128.0/17;
set_real_ip_from   162.158.0.0/15;
set_real_ip_from   104.16.0.0/12;
set_real_ip_from   172.64.0.0/13;
set_real_ip_from   2400:cb00::/32;
set_real_ip_from   2606:4700::/32;
set_real_ip_from   2803:f800::/32;
set_real_ip_from   2405:b500::/32;
set_real_ip_from   2405:8100::/32;
real_ip_header     CF-Connecting-IP;

mod_rpaf Configuração:

LoadModule rpaf_module      /usr/local/apache/modules/mod_rpaf-2.0.so
<IfModule mod_rpaf-2.0.c>
    RPAFenable On
    RPAFproxy_ips 127.0.0.1 #Proxy IPs
    RPAFsethostname On
    RPAFheader CF-Connecting-IP
</IfModule>

Então, ao usar CloudFlare com as configurações acima, os IPs que estão sendo registrados pertencem a CloudFlare apesar das configurações feitas.

Eu tentei as seguintes combinações nas configurações Nginx e mod_rpaf , mas não houve sorte

#Nginx
real_ip_header     X-Client-IP;
real_ip_header     X-Forwarded-For;
real_ip_header     X-Real-IP;

#mod_rpaf
RPAFheader X-Client-IP
RPAFheader X-Forwarded-For
RPAFheader X-Real-IP

Inseri a configuração real_ip_recursive on; in Nginx . Além disso, inserimos todos os intervalos de IP CloudFlare na configuração mod_rpaf em uma tentativa independente. No entanto, tudo isso não resolveu o problema.

Qualquer resposta ou comentário é muito apreciado. Obrigado.

    
por Mina Hafzalla 22.04.2015 / 00:30

1 resposta

1

No Nginx, certifique-se de ter

proxy_set_header CF-Connecting-IP $http_CF_Connecting_IP

depois no Apache com mod_remoteip:

RemoteIPHeader CF-Connecting-IP
RemoteIPInternalProxy 127.0.0.1
    
por 06.05.2015 / 18:17