
一、回源链路是怎样的
理解回源链路,才能知道每一环可能出什么问题:
WAF 节点
↓ ① 网络层:能否路由到源站 IP
↓ ② 传输层:目标端口是否开放
↓ ③ 加密层:TLS 握手是否成功(HTTPS 回源)
↓ ④ 应用层:请求是否带正确 Host
↓ ⑤ 源站处理:业务是否正常响应
源站
二、按错误码定位原因
2.1 502 Bad Gateway
含义:WAF 无法从源站获得有效响应。常见原因:
| 原因 | 排查方法 |
|---|---|
| 源站服务未运行 | 源站执行 systemctl status nginx |
| 端口未监听 | netstat -tlnp | grep 443 |
| 防火墙拦截 WAF 回源 | 检查 iptables / 宝塔防火墙 |
| 源站 IP 变更 | 核对控制台源站配置 |
| 回源端口配错 | 确认源站实际监听端口 |
# 源站侧排查命令
systemctl status nginx # 服务是否运行
netstat -tlnp | grep :443 # 端口是否监听
curl -I http://127.0.0.1/ # 本地能否访问
iptables -L -n | grep 443 # 防火墙规则
# 若看到 DROP 443 且未放行 WAF 回源 IP → 就是原因
# 放行 WAF 回源网段
iptables -I INPUT -p tcp --dport 443 -s 182.61.129.0/24 -j ACCEPT
2.2 504 Gateway Timeout
含义:源站收到请求但响应太慢,超过 WAF 等待上限。原因:
- 源站应用处理慢(数据库慢查询、代码死循环)
- 源站 CPU/内存被打满
- 源站带宽跑满,响应传输慢
- 源站后端(数据库、缓存)不可用导致挂起
- WAF 回源超时设置过短
# 源站侧排查
# 1. 看 CPU/内存
top -bn1 | head -20
free -h
# 2. 看慢查询日志(MySQL)
tail -50 /www/server/data/mysql-slow.log
# 3. 看 PHP-FPM 状态(WordPress 常见)
systemctl status php-fpm
# 若进程数打满,需调大 pm.max_children
# 4. 看实时请求
tail -f /www/wwwlogs/access.log
# 观察是否有卡住的请求
2.3 403 Forbidden
含义:源站明确拒绝了 WAF 的请求。最常见原因是源站白名单没加 WAF 回源 IP。
# 源站 Nginx 配置检查
cat /www/server/panel/vhost/nginx/你的域名.conf | grep -A3 "allow\|deny"
# 若看到:
# allow 203.0.113.10;
# deny all;
# 且 182.61.129.0/24 不在 allow 列表中 → 就是原因
# 修复:把 WAF 回源网段加入白名单
allow 182.61.129.0/24;
allow 203.0.113.10;
deny all;
2.4 连接超时
含义:WAF 连源站 IP 都连不上。原因:源站 IP 错误、源站宕机、路由不通、云服务器安全组未放行。
# 从外部测试源站可达性
telnet 源站IP 443
nc -zv -w3 源站IP 443
ping 源站IP
# 若云服务器(如腾讯云/阿里云)
# 检查控制台"安全组"是否放行了 WAF 回源 IP
# 安全组和系统防火墙是两层,都要放行
三、Host 和协议问题
3.1 回源 Host 错误
如果源站上跑了多个站点,WAF 回源时带的 Host 头决定了访问哪个站点。Host 填错会访问到默认站点,返回 404 或错误内容。
正确配置:
回源 Host = 你的域名(与源站 server_name 一致)
例如源站配置:
server_name www.example.com example.com;
则 WAF 回源 Host 应设为:
www.example.com
3.2 回源协议不匹配
| 源站支持 | WAF 回源协议 | 结果 |
|---|---|---|
| 仅 HTTP | HTTPS | ❌ 握手失败 |
| 仅 HTTPS | HTTP | ❌ 可能被拒绝或跳转 |
| HTTP + HTTPS | 任意 | ✅ 正常 |
如果不确定,建议源站同时监听 80 和 443,或把 WAF 回源协议设为”跟随客户端”。
四、回源健康检查配置
建议开启源站健康检查:
控制台 → 源站配置 → 健康检查
├─ 检查路径:/health 或 /(返回 200 的页面)
├─ 检查间隔:30 秒
├─ 超时时间:5 秒
├─ 失败阈值:连续 3 次 → 摘除该源站
└─ 恢复阈值:连续 2 次成功 → 恢复
多源站架构下,健康检查能自动摘除故障节点,
避免 502 扩散。
五、小结
WAF 回源异常按”网络 → 端口 → 协议 → Host → 应用”五层排查,基本能覆盖所有情况。502 多为源站服务/防火墙问题,504 是源站性能问题,403 是白名单问题。配好源站健康检查,多源站架构下还能自动故障转移。
