解决服务器使用Cloudflare代理后HTTP服务器日志中访问IP都为CDN地址的问题
网站接入Cloudflare 保护后可以提供免费的CDN服务(免费版在中国不提供服务,相当于减速器),WAF Web应用防火墙,抗DDos攻击,HTTPS加密等功能,我部署后发现服务器Nginx日志内ip都是cloudflare服务器的节点,此篇文章解决服务器使用Cloudflare代理后HTTP服务器日志中访问IP都为CDN地址的问题。
关键词:cloudflare nginx cdn
1.添加Ngnix 真实ip配置文件
在Nginx site-enabled 配置文件夹中添加real-ip的配置文件(名称可自定义,也可不新建文件夹直接将设置写入正在使用的配置文件中)
cd /etc/nginx/site-enabled
touch real-ip
2.编辑配置文件
vim real-ip
向配置文件中写入以下内容
#以下ip来自cloudflare文档,详见文章结尾参考
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;
#如果你的服务器不支持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;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
保存退出,检查nginx配置文件语法是否正确,然后重载nginx配置文件
:wq #保存并退出
nginx -t
sudo systemctl reload nginx
3.参考链接
文章作者:四文鱼Max
本文链接:https://blog.awolon.fun/archives/recover-realip-from-cloudflare-cdn.html
许可协议:CC BY-SA 4.0