当服务器使用了CloudFlare的cdn后,无法获取客户端正确的ip地址,为了获取到真实的客户端ip,nginx要配置realip模块和指定CloudFlare的节点ip地址.
系统:centos 5.x
1.安装ngx_http_realip_module
只需要在编译nginx的时候,加上--with-http_realip_module这项参数就可以了.
2.配置CloudFlare节点ip
vi /etc/nginx/nginx.conf //写在http区域里
ipv4:
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;
ipv6:
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;
检查是否有错误,如果没有错误就可以重启nginx了.
ps:
如果CloudFlare节点ip变更,大家可以去下面地址获取最新的节点ip.
https://www.cloudflare.com/ips
好了,这样就不怕使用CloudFlare的cdn,无法获取到客户端的真实ip了.