使用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 的代码大家根据自己情况按照上面说的添加即可。
共有 0 条评论