[WordPress]使用CloudFlare后获取访客真实IP

把站点挂在CloudFlare后,流量走的都是CDN,这就导致后台看到的访客IP地址也是来自CloudFlare代理服务器的,并不是访客真实的IP地址,但其实,CloudFlare在将请求发送给服务器的时候,在名为CF-Connecting-IP的HTTP标头中是携带了真实IP的。本文以仅添加几行代码的方式在WordPress后台以及Nginx后台获取访客原始IP地址。

其他规则转换详情请看CloudFlare官方文档:恢复访客原始IP

WordPress后台

访客给文章留言或评论后,在wp后台是能看到访客IP地址的,但是套了CloudFlare之后,这个IP地址就变成了代理服务器的。

我们只需要来到服务器后台,找到WordPress配置文件wp-config.php,在合适位置添加以下几行代码:

// WordPress 使用 CDN 后获取访客真实 IP
 if( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
 $get_HTTP_X_FORWARDED_FOR = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
 $_SERVER['REMOTE_ADDR'] = trim($get_HTTP_X_FORWARDED_FOR[0]); 
}

 

将IP地址替换成从HTTP_X_FORWARDED_FOR拿到的真实访客IP数据。修改配置文件并保存后,后续wp后台评论的访客IP地址即为HTTP标头中的真实IP数据。

Nginx日志

某些时候,我们会有去服务器后台查看访问日志的需求,如果看到的全是经过CloudFlare代理之后的IP的话,那就不太善了。

对于Nginx的日志,我们也可以通过修改配置文件的方式获取真实请求IP。在http配置区域找到 # include luawaf.conf 这一行,在下方加入以下代码:

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;

 

保存配置文件nginx -s reload重载nginx服务后,access日志里面的IP即为真实访客IP。

版权声明:
作者:小鱼
链接:https://afish.org/index.php/2023/10/10/real_ip/
来源:小鱼的blog
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>