一般站点在配置了CDN进行加速后都无法获取访客真实IP,只能获取CDN代理IP。此时会导致一系列问题,比如无法有效过滤广告等垃圾留言和封杀恶意攻击等等。。。

之前在网上找了一圈解决方法,发现不适用我的情况。今天又搜了一下,发现两篇文章,都是添加同一段代码到 Typecho 的 php 文件里,只不过添加的地方不一样(经测试,一个可行,一个不可行)。今天在这里给大家提个醒,添加到主题模板里 function.php 的方案是不可行的。想要正确获取访客真实IP,请在 Typecho 站点根目录里的 config.inc.php 添加下面这段代码。

关于这个获取使用 CDN 后的真实访客IP地址的代码在 WordPress 上也是是适用的,WordPress 放到 wp-config.php(新版typecho的文件名叫:config.inc.php) 里即可。
//绕过 CDN 代理IP获取客户真实IP地址
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}
添加完之后,你的 Typecho 站点的评论就会直接显示访客真实IP,而不是CDN的代理地址了。

Last modification:March 2, 2020
如果觉得我的文章对你有用,请随意投币