比如你做的论坛的服务器是在北京,广东用户访问会很慢,你在广东用CDN服务器把你当服务器文件缓存到CDN服务器上,这样广东用户访问时,会通过智能DNS将访问地址指向你的CDN缓存服务器,这样就可以提高访问速度了。
CDN简单的说就是把你的服务器上可以缓存的文件(主要是静态文件、图片、JS等)下载到缓存服务器上。比如你的服务器是在北京,广东用户访问会很慢,你在广东用CDN服务器把你当服务器文件缓存到CDN服务器上,这样广东用户访问时,会通过智能DNS将访问地址指向你的CDN缓存服务器,这样就可以提高访问速度了。
使用了国外的空间的站长经常会苦恼空间访问速度慢,DNS解析反应慢的问题。为了解决这些问题,最好的办法就是使用CDN,加快博客和网站从国内的访问速度,提高用户体验度。而且适合DZ使用任何一种CDN产品之后照成的这种情况。首先说手该问题导致的结果:
1.Discuz论坛可能无法获得用户的真实IP,导致某些用户IP显示的是CDN产品节点的IP
2.论坛访问量过大的话,可能会导致用户访问时提示“抱歉,您的 IP 地址不在被允许,或您的账号被禁用,无法访问本站点”
接下来谈谈产生原因:
使用CDN,对于网站访客来说,相当于使用了代理访问,而DZ在设计上,是优先获取代理IP,其它才会检测代理服务器是否将用户真实IP传输过来,也就是说获取代理IP优先于用户真实IP。如果您的网站不需要对用户访问做过多的限制,强烈建议按照以下方法进行:
第一种(DZ X2版本):打开DZ,/source/class/class_core.php 文件;
搜索“HTTP_CLIENT_IP”,找到下面这段代码:
function _get_client_ip() {
$ip = $_SERVER[‘REMOTE_ADDR’]
if (isset($_SERVER[‘HTTP_CLIENT_IP’]) &&preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’, $_SERVER[‘HTTP_CLIENT_IP’])) {
$ip = $_SERVER[‘HTTP_CLIENT_IP’]
} elseif(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’], $matches)) {
foreach ($matches[0] AS $xip) {
if (!preg_match(‘#^(10|172\.16|192\.168)\.#’, $xip)) {
$ip = $xip
break
}
}
}
return $ip
}
替换成一下代码:
function _get_client_ip() {
$ip = $_SERVER[‘REMOTE_ADDR’]
if (isset($_SERVER[‘HTTP_X_REAL_FORWARDED_FOR’]) &&preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’, $_SERVER[‘HTTP_X_REAL_FORWARDED_FOR’])) {
$ip = $_SERVER[‘HTTP_X_REAL_FORWARDED_FOR’]
}
elseif (isset($_SERVER[‘HTTP_X_FORWARDED_FOR’]) &&preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’, $_SERVER[‘HTTP_X_FORWARDED_FOR’])) {
$ip = $_SERVER[‘HTTP_X_FORWARDED_FOR’]
}
elseif (isset($_SERVER[‘HTTP_CLIENT_IP’]) &&preg_match(‘/^([0-9]{1,3}\.){3}[0-9]{1,3}$/’, $_SERVER[‘HTTP_CLIENT_IP’])) {
$ip = $_SERVER[‘HTTP_CLIENT_IP’]
}
return $ip
}
希望可以帮助到你
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)