网站启用了Cloudflare CDN服务后设置nginx记录访客的真实IP

网站启用了Cloudflare的免费CDN服务后,nginx的log记录全是Cloudflare节点的IP地址,没法在服务器上用自己的脚本做统计,于是网上查了一下资料,参考Cloudflare的官方说明:How-do-I-restore-original-visitor-IP-with-Nginx

其实就是编辑你网站的nginx配置文件,在location / {} 段落内加如下内容,如:
[email protected]:~# vi /etc/nginx/sites-available/www.itkylin.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 104.16.0.0/12;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
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;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
# use any of the following two
real_ip_header CF-Connecting-IP;
#real_ip_header X-Forwarded-For;
:wq!

保存退出后重新启动nginx服务即可:

1
[email protected]:~# service nginx restart

注:我的nginx是通过apt-get install方式安装的,默认就启用了http_realip_module模块,若编辑了配置文件后重新启动nginx服务失败说明你的nginx编译时没有加入

1
--with-http_realip_module

参数,你要重新编译你的nginx。