我一直试图解决这个问题,我希望有人能帮助我。
我有Nginx站在Apache面前的反向代理。 我只能在没有CloudFlare的情况下使用Nginx + Apache来使用mod_rpaf模块来logging客户端的真实IP。 然后我决定添加CloudFlare到我的服务器。 现在, CloudFlare IP正在显示,而不是客户端的IP。 我安装了Nginx的 RealIP Module ,我尝试了各种configuration,但没有解决问题。 然后,我安装了mod_cloudflare ,它应该按照CloudFlare上的描述将真实客户端的IPlogging到Apache ,但是这也没有解决问题。
首先,Nginx + Apache的工作configuration如下:
Nginxconfiguration:
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_rpafconfiguration:
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地址正确显示。
如果有人正在寻找logging真实客户端的IP地址,可以使用上述configuration。
其次,使用CloudFlare与Nginx + Apache:
Nginxconfiguration:
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_rpafconfiguration:
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>
因此,在上述configuration中使用CloudFlare时,尽pipe进行了configuration,但被logging的IP仍属于CloudFlare 。
我在Nginx和mod_rpafconfiguration中尝试了以下组合,但没有运气,
#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; 在Nginxconfiguration中。 另外,在独立尝试mod_rpaf所有CloudFlare IP范围插入到mod_rpafconfiguration中。 但是,所有这些都没有解决问题。
任何答复或评论非常感谢。 谢谢。
在Nginx中确保你有
proxy_set_header CF-Connecting-IP $http_CF_Connecting_IP
然后在mod_remoteip中用Apache:
RemoteIPHeader CF-Connecting-IP RemoteIPInternalProxy 127.0.0.1