前言
WordPress 在阿里云 ESA 反向代理下获取的 IP 不对,原因是 ESA 作为反向代理,WordPress 默认只读取 REMOTE_ADDR(即 ESA 节点 IP),而非用户真实 IP,解决思路是将 REMOTE_ADDR 重设为用户真实 IP
一、先在 ESA 开启真实 IP 透传
![图片[1]-使用阿里云 ESA 后网站获取的访客IP错误解决方法-黎洛极客网](https://oss.wvn.cn/img/6a87cd7922d42.webp)
二、在 WordPress 里修正 IP
编辑站点根目录的 wp-config.php,在 <?php 下一行加入:
// 阿里云 ESA 真实 IP
if (isset($_SERVER['HTTP_ALI_REAL_CLIENT_IP'])) {
// 优先用 ESA 官方头
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_ALI_REAL_CLIENT_IP'];
} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
// 备用 X-Forwarded-For
$ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = trim($ips[0]);
}
![图片[2]-使用阿里云 ESA 后网站获取的访客IP错误解决方法-黎洛极客网](https://oss.wvn.cn/img/6a87cdb82c0df.webp)
保存后 WordPress 的评论、统计及插件即可显示真实访客 IP,其它 PHP 程序亦然,只需在通用文件中添加修正代码即可,其它 CDN 或反代原理相同,稍作调整即可获取真实 IP
nginx修正,在服务器配置里直接改写 REMOTE_ADDR,理论上更改好,但需要获取ESA的网络以设置白名单,如果阿里云IP有变动,还需要及时更改,相对麻烦一些。并且免费版无法直接获取到ESA的网段。就不推荐了。以下代码仅做记录。暂不推荐。
# Nginx信任 ESA 节点(需要获取阿里云最新网段)
set_real_ip_from 47.88.0.0/16;
set_real_ip_from 47.90.0.0/16;
set_real_ip_from 118.178.0.0/16;
# ... 其他 ESA 网段
# 从 ESA 传递的头读取真实 IP
real_ip_header ali-real-client-ip;
real_ip_recursive on;
© 版权声明
本站资源大多来自网络,如有侵犯权益请联系管理员,我们会第一时间审核删除。站内资源仅供学习测试,未经许可禁止商用,请在24小时内删除。
THE END





