一般站点在配置了CDN进行加速后都无法获取访客真实IP,只能获取CDN代理IP。此时会导致一系列问题,比如无法有效过滤广告等垃圾留言和封杀恶意攻击等等。。。
之前在网上找了一圈解决方法,发现不适用我的情况。今天又搜了一下,发现两篇文章,都是添加同一段代码到 Typecho 的 php 文件里,只不过添加的地方不一样(经测试,一个可行,一个不可行)。今天在这里给大家提个醒,添加到主题模板里 function.php 的方案是不可行的。想要正确获取访客真实IP,请在 Typecho 站点根目录里的 config.inc.php 添加下面这段代码。
关于这个获取使用 CDN 后的真实访客IP地址的代码在 WordPress 上也是是适用的,WordPress 放到 wp-config.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的代理地址了。