











用阿里云 ESA 后 WordPress 获取到的 IP 不对,是因为 ESA 是反向代理,WordPress 默认只认 REMOTE_ADDR(即 ESA 节点的 IP),而不是用户真实 IP。
解决办法就是重设REMOTE_ADDR为用户真实IP。
1.进入 ESA 控制台 → 站点管理 → 你的站点
2.左侧:规则 → 转换规则 → 托管转换
3.开启 添加真实客户端 IP 标头(ali-real-client-ip)
![图片[1]-使用阿里云 ESA 后网站获取的访客IP错误解决方法-淇云博客-专注于IT技术分享](https://tc.88pq.cn/a/2026/07/28/6a681cf506674.webp)
编辑站点根目录的 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错误解决方法-淇云博客-专注于IT技术分享](https://tc.88pq.cn/a/2026/07/28/6a681d98bf3f9.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;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。