Typecho 配置 CloudFlare CDN 后获取用户真实 IP

问题来源

网站在使用CloudFlare CDN服务后,有时候会无法获取到用户访问的真实IP,而导致UserAgent插件无法查询正确的用户IP信息。

解决思路

通过PHP超全局变量 $_SERVER['REMOTE_ADDR'] 获得的IP全部是CDN节点的IP,这样会影响一些功能的使用。这种情况下可以使用PHP超全局变量 $_SERVER['HTTP_X_FORWARDED_FOR'] 来获取访问者真实IP。

食用指南

请在 Typecho 站点根目录里的 config.inc.php 添加下面这段代码

/** 获取用户真实IP */
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) 
{
    $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
    $_SERVER['REMOTE_ADDR'] = $list[0];
 }

引用资源:网站开启CDN后获取访问者真实IP

松鼠大大

若不是真的废物,谁又愿意混吃等死呢?

相关推荐

Typecho折腾小笔记

一、使Typecho支持emoji表情 !> Typecho默认不支持emoji表情,其实不是程序的锅,而是由于编码的问题,只需要将默认 ...

Flarum 任务计划 & Cron

当我们在使用 Flarum 部分插件时,比如:fof/drafts 的“定时发布”;fof/best-answer 的提醒事项“于N天后提醒用户选择最 ...

2 条评论

  1. Leanard

    请问一下 config.inc.php文件里我新增的代码不起作用咋办,而且无论如何他都会显示无法获取ip

    • @Leanard 如果PHP无法获取的话,也可以搭配“nginx/Apache”这类服务来获取用户真实IP

      “显示无法获取ip”,可以排查下提供此功能的代码,或许是其中代码出现了问题,导致其获取不到真实IP地址

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。