成功解决困扰已久的问题:评论显示CDN IP不显示正常IP

最近给本站接入 CDN 加速之后,我遇到了一个非常恶心人的问题:所有评论、网站访问日志、后台登录记录,全部显示成了 CDN 节点 IP,不再显示访客真实 IP。

一开始我以为是 CDN 故障,排查之后才明白,这其实是正常机制。这篇文章我把原因、原理和一次性永久解决的方法完整记录下来,方便以后回看,也希望能帮到遇到同样问题的朋友。

接入 CDN 后 IP 错乱的原因

没开 CDN 时:

  • 用户 → 直接访问源站
  • 服务器拿到的 REMOTE_ADDR = 用户真实 IP

开启 CDN(EdgeOne / Cloudflare / 所有 CDN)后:

  • 用户 → CDN 节点 → 我的源站服务器
  • 服务器看到的来访 IP = CDN 节点 IP

而真实访客 IP,CDN 会放在 HTTP 请求头中传递给源站:

  • EdgeOne:X-Forwarded-For
  • Cloudflare:X-Forwarded-For / CF-Connecting-IP

但 Nginx 和 WordPress 默认不会读取这个头,所以导致全站 IP 全部错乱。

最终解决方案(Nginx 真实 IP 配置)

我只需要在站点 Nginx 配置中加入三行代码,全站就自动恢复了真实 IP,包括:评论 IP、后台日志、登录 IP、防火墙记录、所有插件统计 IP。

编辑站点 Nginx 配置,在 server{} 内部添加:

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

保存后重载 Nginx:

nginx -s reload

代码作用解释

  • set_real_ip_from:信任 CDN 传过来的 IP 头
  • real_ip_header X-Forwarded-For:使用 CDN 传递的真实访客 IP
  • real_ip_recursive on:自动过滤多层代理,取最真实客户端 IP

配置完成后,WordPress 无需任何插件、无需改代码、无需改主题,自动恢复真实 IP。


作 者:Bleaz.Xin
链 接: https://blog.bleaz.net/archives/252
来 源:Bleaz‘s Blog
版 权 声 明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。文章版权归作者所有,未经允许请勿转载!


暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇