Назад | Перейти на главную страницу

Как регистрировать реальные IP-адреса клиентов при использовании CloudFlare + Nginx + Apache

Я несколько дней застревал, пытаясь решить эту проблему, надеюсь, кто-то может мне с этим помочь.

у меня есть Nginx стоит как обратный прокси перед Apache. Я могу регистрировать реальные IP-адреса клиентов, используя mod_rpaf модуль при использовании Nginx + Apache только без CloudFlare. Затем я решил добавить CloudFlare на мой сервер. Сейчас CloudFlare IP-адреса отображаются вместо IP-адресов клиентов. у меня есть Nginx RealIP Module установлен, пробовал разные конфигурации, но проблему не решил. Затем я установил mod_cloudflare который должен регистрировать IP-адреса реальных клиентов в Apache как описано на CloudFlare, но это тоже не решило проблему.

Во-первых, рабочие конфигурации только для Nginx + Apache следующие:

Конфигурация 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 Конфигурация:

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>

До сих пор реальные IP-адреса клиентов показывались правильно.

Если кто-то хочет регистрировать IP-адреса реальных клиентов, вы можете использовать указанные выше конфигурации.


Во-вторых, используя CloudFlare с Nginx + Apache:

Конфигурация 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 Конфигурация:

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>

Так что при использовании CloudFlare с приведенными выше конфигурациями регистрируемые IP-адреса принадлежат CloudFlare несмотря на сделанные изменения.

Я пробовал следующие комбинации в Nginx и mod_rpaf конфигурации но не повезло,

#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

Я вставил real_ip_recursive on; в Nginx конфигурация. Также вставлены все CloudFlare Диапазон IP до mod_rpaf конфигурация в автономном режиме. Однако все это не решило проблему.

Любой ответ или комментарий приветствуются. Спасибо.

В Nginx убедитесь, что у вас есть

proxy_set_header CF-Connecting-IP $http_CF_Connecting_IP

затем в Apache с mod_remoteip:

RemoteIPHeader CF-Connecting-IP
RemoteIPInternalProxy 127.0.0.1