网站接入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.参考链接

Module ngx_http_realip_module

恢复原始访问者 IP:使用 mod_cloudflare 记录访问者 IP 地址

文章作者:四文鱼Max

本文链接:https://blog.awolon.fun/archives/recover-realip-from-cloudflare-cdn.html

许可协议:CC BY-SA 4.0

标签: cloudflare, cdn, nginx

添加新评论