http://www.freehao123.com/cdn-ip/
使用了国外的空间的站长经常会苦恼空间访问速度慢,DNS解析反应慢的问题。为了解决这些问题,最好的办法就是使用CDN,加快博客和网站从国内的访问速度,提高用户体验度。

然而,网站在使用CDN服务后,却发现了一个问题:无法获取到用户访问的真实IP。后台注册或者评论显示的用户IP全部是CDN的IP,或者某一个固定IP地址。这样显然会影响一些功能的使用。

解决上面的问题,一种方法是插件法,这个方法不需要修改任何代码,简单方便。另一种方法自然是修改代码,通用性比较强。如果你的网站的访问速度慢,不妨试用下面的免费CDN,配以本篇文章的介绍的方法,就完美了。

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP

一、安装CloudFlare WordPress插件获取真实IP

1、如果你的Wordpress正在使用CloudFlare免费DNS,那么可以直接安装CloudFlare WordPress插件,这款官方提供的插件的主要作用就是获取真实IP,另外它还会对你的WP进行一定的优化。

2、这里是CloudFlare WordPress插件下载地址,你可以直接在Wordpress后台插件页面中搜索安装。

3、安装后,先到你的CloudFlare账户中,获取API KEY,如下图:

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

4、然后回到Wordpress后台的CloudFlare设置中,添加以上信息,如下图:

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

5、提示如下就表示完成了,这个插件就可以正常工作了。

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

6、另外,在CloudFlare插件页面的下方还有一个优化功能,点击它,CloudFlare会对你的Wordpress进行自动优化。如下图:

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

二、安装Incapsula WordPress插件得到真实IP

1、如果你的Wordpress正在使用Incapsula免费CDN服务,照样可以方便安装Incapsula WordPress插件。这款插件就是由Incapsula官方提供的。

2、该插件会通过设置$_SERVER['REMOTE_ADDR']来获取用户的真实IP,同时Incapsula WordPress插件会在所有插件执行前完成获取真实IP的工作,从而让其它插件得到准确数据。

3、这里是Incapsula WordPress插件下载地址,当然可以直接从Wordpress后台直接安装。安装完成后,不需要任何操作,就可以正常工作了。

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

三、修改Wordpress配置文件来获取准确IP地址

1、将一下代码添加到wp-config.php文件开头即可。

 if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
} 

2、效果见下图:

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

四、Discuz!论坛修改代码获取用户真实IP

1、Discuz!论坛貌似没有专门的插件来解决使用了CDN后获取用户的真实IP的问题,但是我们可以通过修改代码的方法来实现。

2、Discuz! X2修改的方法是:用Notepad+打开/source/class/class_core.php 文件,搜索“HTTP_CLIENT_IP”,定位我们要修改的代码。如下图:

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

3、这上图中三行代码全部删除,记住只删除这三行代码,然后加入以下代码作替代。

 if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all(‘#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s’, $_SERVER['HTTP_X_FORWARDED_FOR'],
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all(‘#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s’, $_SERVER['HTTP_X_FORWARDED_FOR'], 

4、Discuz! X2.5修改的方法是:打开/source/class/discuz/discuz_application.php文件,搜索“HTTP_CLIENT_IP”,同样找到这三行,用以上代码替换。如下图:

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

5、最后的效果如下图:

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

6、当然不要忘记到Discuz! 后台更新一下缓存。

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP-LMLPHP

五、CDN加速后ASP网站获取用户真实IP的方法

1、请用下列代码来代替你在ASP中获取用户IP的程序代码。

2、代码如下:

 Function checkip(checkstring)
dim re1
set re1=new RegExp
re1.pattern="^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"
re1.global=false
re1.Ignorecase=false
checkip=re1.test(checkstring)
set re1=nothing
End Function

Function get_cli_ip()
dim client_ip
if checkip(Request.ServerVariables("HTTP_CLIENT_IP"))=true then
get_cli_ip = checkip(Request.ServerVariables("HTTP_CLIENT_IP"))
else
MyArray = split(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),",")
if ubound(MyArray)>=0 then
client_ip = trim(MyArray(0))
if checkip(client_ip)=true then
get_cli_ip = client_ip
exit function
end if
end if
get_cli_ip = Request.ServerVariables("REMOTE_ADDR")
end if
end function 

六、获取IP小结

1、主流的网站程序,如Wordpress、Discuz!在使用CDN后获取真实IP网上都有非常多的教程,很容易解决这个问题。

2、非主流的网站程序,可以用PHP、ASP代码获取CDN后真实IP的通用方法来解决这一问题。

文章出自:免费资源部落 http://www.freehao123.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。

10-09 10:09