刚才我突然想到我在某个地方看到一个提示:开启cdn后可能会无法获取用户真实ip,于是我进到了网站后台一看,我的ip竟然显示是南非的,这样非常影响我的统计


先来讲讲cdn的工作原理:
简单四个字概括就是"就近原则",什么意思呢,你可以去ping下本站域名,你会发现ip栏里面不止一个ip,也就是说,系统会匹配离你最近的cdn服务器打开,如果离你最近的服务器打不开就会回源(回到源服务器),所以,不同的人访问的是不同的服务器,就会造成ip的错误,那么怎么解决呢


如果你是wordpress,就在主机根目录找到wp-config.php文件,在里面添加如下代码

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

如果你是typecho,就在根目录找到config.inc.php,在最后添加如下代码

    /** 防止CDN造成无法获取客户真实IP地址 */
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
    {
        $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
        $_SERVER['REMOTE_ADDR'] = $list[0];
    }

然后清除cdn缓存即可

最后修改:2020 年 11 月 21 日
如果觉得我的文章对你有用,请随意赞赏