WordPress 往数据库存 IP 的时候似乎用的是 REMOTE_ADDR,这样一来数据库里面的评论信息就全是从各个 CDN 服务器来的 IP。
在 wp-config.php 文件中增加下面代码就可以获取 CDN 后访客的真实 IP。这个函数的核心是用解析后的 HTTP_X_FORWARDED_FOR 替换 REMOTE_ADDR。
// WordPress 使用 CDN 后获取访客真实 IP if( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) { $get_HTTP_X_FORWARDED_FOR = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = trim($get_HTTP_X_FORWARDED_FOR[0]); }
这样做存在风险,轻则伪造IP地址,重则遭受注入攻击。我的《网站使用 CDN 之后获取访客原 IP 的方法》这篇文章给出了比较安全的处理方法。
@柯善康棒!学习了!