返回列表 发布新帖
查看: 27|回复: 0

CDN 环境下正确识别真实访客 IP 的方法

发表于 2025-10-16 16:54:31 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
网站接入 CDN 后,最大的变化之一就是:
访问源站的请求不再来自真实用户,而是来自 CDN 节点。
这虽然能有效防御攻击、加速访问,但也带来一个问题——
日志、统计、防火墙中看到的全是 CDN 节点的 IP。

那怎么让服务器正确识别真实访客的 IP 呢?
下面我们来详细说说。

一、为什么要获取真实 IP?
1. 安全分析:判断攻击来源、封禁爆破 IP。
2. 流量统计:记录真实访客数量和地区。
3. 日志追踪:分析行为日志时更准确。
如果不做处理,Nginx、Apache、宝塔后台等看到的都是 CDN 回源 IP,
导致封禁、统计、审计都出现偏差。

二、CDN 如何传递真实 IP
主流 CDN 在回源时都会在请求头中添加真实访客 IP,常见有:
[td]
CDN 类型请求头字段
CloudflareCF-Connecting-IP
腾讯云 CDNX-Forwarded-For
阿里云 CDNX-Forwarded-For
百度云加速Cdn-Src-Ip
其他 CDN(如 FunCDN)一般也是 X-Forwarded-For
因此,只要服务器正确解析这些请求头,就能还原访客的真实 IP。

三、Nginx 配置示例
在 Nginx 中,只需要加上以下配置即可识别真实 IP:
  1. # 在 http 段添加
  2. set_real_ip_from 0.0.0.0/0;      # 允许所有来源(也可填写 CDN IP 段)
  3. real_ip_header X-Forwarded-For;  # CDN 回源头
  4. real_ip_recursive on;
复制代码
说明:
set_real_ip_from:指定信任的来源(建议填写 CDN 节点 IP 段)。
real_ip_header:指定从哪个 Header 中取真实 IP。
real_ip_recursive:表示从多层代理中取最后一个有效 IP。

重载 Nginx:
  1. nginx -t && systemctl reload nginx
复制代码
然后访问日志中 $remote_addr 会变成 CDN 节点 IP,
如果改成 $realip_remote_addr 就能看到真实用户 IP。

四、宝塔面板下的设置方法
如果你使用宝塔面板:
1. 打开网站设置 → 配置文件
2. 在 server 段上方加入:
  1. set_real_ip_from 0.0.0.0/0;
  2. real_ip_header X-Forwarded-For;
  3. real_ip_recursive on;
复制代码

3. 保存并重载配置。
有些 CDN(如 Cloudflare)使用不同的 Header,可以替换成:
  1. real_ip_header CF-Connecting-IP;
复制代码
如果你使用多个 CDN,可根据来源 IP 或域名设置不同规则。

五、验证真实 IP 是否生效
执行以下命令查看访问日志:
  1. tail -n 20 /www/wwwlogs/yourdomain.com.log
复制代码
如果你能看到自己的公网 IP,而不是 CDN 节点 IP,说明配置成功。
也可以用 PHP 临时脚本测试:
  1. <?php
  2. echo $_SERVER['REMOTE_ADDR'];
  3. ?>
复制代码

六、防火墙与日志的配合
1. Fail2ban / 防火墙封禁逻辑
如果未识别真实 IP,封禁的都是 CDN 节点,会导致网站无法访问。

2. 日志分析
建议在日志中使用 $realip_remote_addr 替代 $remote_addr,例如:
  1. log_format main '$realip_remote_addr - $remote_user [$time_local] "$request" '
  2.                 '$status $body_bytes_sent "$http_referer" "$http_user_agent"';
复制代码

七、额外建议
定期更新 CDN 节点 IP 段(部分 CDN 官方提供)。
若使用多层代理(CDN → 反代 → 源站),只信任第一层代理。
不要轻易信任所有来源 IP,防止伪造 Header。

总结
在 CDN 环境下识别真实 IP 的关键在于:
1. 了解 CDN 使用的 Header;
2. 正确配置 real_ip_header;
3. 调整防火墙与日志策略。

配置好后,无论是分析日志、封禁攻击,还是统计访问数据,
都能更准确、更安全。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.112997 second(s), 10 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表