使用CDN加速后 Nginx、WordPress、Typecho 获取访客真实 IP 方法。

方式1:修改nginx配置,开启 http_realip_module 模块的获取真实 IP 开关并传递用户 IP,如下:

#cdn识别真实IP开始
real_ip_header X-Forwarded-For;
real_ip_recursive on;

X-Forwarded-For 这个 header 信息,用于记录此请求所进过的 ip,假设本 nginx 为第 3 层代理,那么获取到的 X-Forwarded-For 就会记录 3 个 ip,分别顺序为:用户 IP、第一层代理 IP、第二层代理 IP; 这时候就会用到real_ip_recursive参数,如果此参数不开启,就会从右往左,取第一个出现在信任中的 IP 的左边一位的 IP 作为$remote_addr,我们这里是全信任,所以就会取到第一层代理 IP,这明显就并不一定对。如果开启了 real_ip_recursive,那么就会从右边往左一直取到第一个不信任的 IP 作为$remote_addr,如果像我这里是全部信任,那么最左边的 IP 则会被作为$remote_addr。

至此我们在 Nginx 层面已经获取到了访客的真实 IP 了,大家可以实时跟踪观察一下站点日志,自己再访问一下,看到自己的 IP 在日志里出现记录就表明成功了。

方式2:修改CONGIG.PHP文件

WordPress 和 Typecho 下获取访客真实 IP 方法是一样的,只需要在配置文件( WordPress 为 wp-config.php, 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];
}

添加代码后,记得一定要重启一下 php-fpm 让代码生效哦,切记!切记!切记!

到这里就完成了 Nginx、 WordPress 、 Typecho 在开启了 CDN 后自动获取用户访客真实 IP 了,最后明月分享了 cdn.conf 文件,大家只需要在 Nginx 的 http 里 include 这个文件就可以完成 Nginx 的配置了,最后重启一下 Nginx 即可生效,至于 WordPress 、 Typecho 的代码大家根据自己情况按照上面说的添加即可。

文章版权归原作者所有或来自互联网,未经允许请勿转载。如有侵权请联系我删除,谢谢!
THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录