使用CDN后如何获取访客的真实IP
我们知道一旦你使用CDN加速你的网站后,您的访客的IP地址都将被记录为CDN服务器的IP地址,虽然有些人不会介意,也不会造成非常大的错误,但是,还是有其不便之处,比如说,你的访客在你的博客上评论的时候,所有的留言者的IP都是同一个!那么问题就来了!假如你安装了防垃圾评论插件,那么所有的评论可能都会被视为垃圾评论!
我们的wordpress是使用"REMOTE_ADDR"这个函数来获取访客的IP地址的,那么只要我们将获取的函数替换成"HTTP_X_FORWARDED_FOR",一般就可以了!
网络上有一段代码:
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']); $_SERVER['REMOTE_ADDR'] = $list[0]; }
将这段代码添加到wp-config.php文件的头部就可以了!
对于使用Cloudflare或者Incapsula的CDN的博客来说,它们有方便的插件可以使用,但是本质上它们也是在wordpress添加这个函数的!但是国内的CDN服务商没有类似的插件可以使用,所以,我们只好使用上面的代码了!
更多的详细情况,可以参考下面的地址:
http://www.freehao123.com/cdn-ip/
http://biergaizi.info/archives/2011/08/894.html
是的,就是这个代码,我现在就在用。
对于WordPress只要把下面的代码放到wp-config.php文件的最后就可以了!
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
必须放在开头吗 ?
试了下 放在文件尾巴也是可以的
这个还真没试过,不过在尾部可能有几率会出问题。