一、可能出现的问题
Wordfence 和阿里云 ESA 不会直接冲突,可以共存。但两者都具备 WAF / 防火墙 / 频率控制能力,如果配置不当,容易出现重复拦截、误封、滑块挑战叠加、扫描失败、后台登录异常等问题。
二、更稳妥的做法
让 ESA 做边缘层防护,Wordfence 做 WordPress 应用层防护,避免两边都开强拦截
三、配置
可以共存,关键是分层防护:ESA 管边缘和回源,Wordfence 管 WordPress 应用层。建议按下面顺序配。
1. 先让 ESA 正确透传真实客户端 IP
在 ESA 控制台打开:
站点管理 → 规则 → 转换规则 → 托管转换 → 添加真实客户端 IP 标头
这样回源时 ESA 会加上 ali-real-client-ip,比客户端可能伪造的 X-Forwarded-For 更可信。
2. 配置 ESA 的客户端 IP 识别
在 ESA 控制台设置:
站点管理 → 安全防护 → 设置 → 客户端 IP 定义
如果客户端直接连 ESA,默认用“建连 IP”即可;如果前面还有其他代理,再改成自定义 Header。
3. 让 Wordfence 识别真实 IP
在 WordPress 后台:
Wordfence → All Options → How does Wordfence get IPs
改为:
Use the X-Forwarded-For HTTP header
因为你用了 ESA 做前端代理,Wordfence 必须从这里读取真实访客 IP,否则会把 ESA 回源 IP 当成访客 IP,导致误封。
4. 源站只放行 ESA 回源 IP
免费版ESA没有这功能,就算了,收费可以继续
在 ECS 安全组、宝塔面板或 Nginx 里,只允许 ESA 回源 IP 段访问 80/443。
路径:
ESA 控制台 → 站点管理 → 安全防护 → 源站防护
复制里面的回源 IP 列表,加入源站白名单。这样公网流量只能从 ESA 进来,Wordfence 也能拿到更干净的流量。
5. ESA 做粗防护,Wordfence 做细防护
建议这样分工:
| 层级 | 配置 | 作用 |
|---|---|---|
| ESA | 开启 WAF 托管规则、扫描防护、智能限频 | 拦截 SQL 注入、XSS、扫描器、CC |
| ESA | 安全级别先设“低”或“中等” | 避免一开始误拦太多 |
| ESA | 对 /wp-admin、/wp-login.php、xmlrpc.php、REST API 做精细规则 | 减少后台和接口被误拦 |
| Wordfence | 开启防火墙、登录保护、文件扫描 | 防插件漏洞、弱口令、后门 |
| Wordfence | 不要同时开过严的国家封锁和频次限制 | 避免和 ESA 限频叠加 |
6. 缓存和后台路径要特殊处理
ESA 缓存规则里建议排除:
/wp-admin/*/wp-login.php/xmlrpc.php/wp-json/*- 评论提交、购物车、登录态相关接口
否则可能出现后台登录失败、评论提交异常、API 返回缓存等问题。
7. 出现误拦时这样排查
先看 ESA:
安全防护 → 事件分析,确认是不是 ESA WAF 拦截。
再看 Wordfence:
Live Traffic / Blocking,确认是否 Wordfence 触发。
如果确认是 ESA 误拦,可以用:
安全防护 → WAF → 白名单规则
按 URI、Header、IP 做精确放行,不要直接关闭 WAF。
按这个顺序配完,ESA 负责挡住大部分恶意流量和扫描,Wordfence 负责 WordPress 内部安全,两者就能比较稳地共存。