Typecho/WordPress开启CDN后获取真实请求IP

添加 Cloudflare CDN 后,评论 IP 显示的是 Cloudflare CDN 的代理 IP 而不是访客真实 IP,此时会有各种各样的问题,如无法有效过滤垃圾留言和封杀恶意攻击等等。下面代码在 Typecho 和 WordPress 上都是通用的,分别放到 Typecho 的config.inc.php 和 WordPress 的 wp-config.php 里即可。

详细代码如下:

1
2
3
4
5
6
//防止 CDN 造成无法获取客户真实 IP 地址
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}

添加完之后,该站点的评论就会直接显示访客真实IP了。