现象:
1.DZ 论坛可能无法获得用户的真实 IP
2. 论坛访问量过大的话,可能会导致用户访问时提示 「抱歉,您的 IP 地址不在被允许,或您的账号被禁用,无法访问本站点」

原因:
使用 CDN,对于网站访客来说,相当于使用了代理访问,而 DZ 在设计上,是优先获取代理 IP,其它才会检测代理服务器是否将用户真实 IP 传输过来,也就是说获取代理 IP 优先于用户真实 IP 。如果您的网站不需要对用户访问做过多的限制,强烈建议按照以下方法进行:

解决方法 (DZ X2 为例):
打开 DZ    /source/class/class_core.php 文件
找到第 341 行,或者搜索 「HTTP_CLIENT_IP」,找到如下代码:

  1. if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match(『/^([0-9]{1,3}.){3}[0-9]{1,3}$/』, $_SERVER['HTTP_CLIENT_IP'])) {
  2. $ip = $_SERVER['HTTP_CLIENT_IP'];
  3. } 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'],
  4. 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'],

方法 1:
将以上代码修改为:

  1. 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'],
  2. 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'],

方法 2:
临时注释部分代码,也就是比原来的代码多了二对注释符 (/*和*/) 即将上面的代码修改成:

  1. /*
  2. if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match(『/^([0-9]{1,3}.){3}[0-9]{1,3}$/』, $_SERVER['HTTP_CLIENT_IP'])) {
  3. $ip = $_SERVER['HTTP_CLIENT_IP'];
  4. } else
  5. */
  6. 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'],
  7. /*
  8. 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'];         }else
  9. */
  10. 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'],

以上操作后,登陆 CDN 和你的 Discuz! 论坛后台分别清除缓存即可。
备注:部分版本的 Discuz! 该文件中可能有区别,