WAF回源异常怎么处理?502/504原因全解析

速读摘要:WAF 回源异常主要表现为 502(源站不可达)、504(回源超时)、403(被源站拒绝)和连接超时。原因可归为六类:网络不通、端口不通、被源站拒绝、响应超时、Host 错误、协议不匹配。本文逐个拆解原因和对应的排查命令。
WAF 回源异常怎么处理?
WAF 性能与稳定性篇 · 第 65 问 · 主机吧 WAF 知识库

一、回源链路是怎样的

理解回源链路,才能知道每一环可能出什么问题:

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 回源协议结果
仅 HTTPHTTPS❌ 握手失败
仅 HTTPSHTTP❌ 可能被拒绝或跳转
HTTP + HTTPS任意✅ 正常

如果不确定,建议源站同时监听 80 和 443,或把 WAF 回源协议设为”跟随客户端”。

四、回源健康检查配置

建议开启源站健康检查:
  控制台 → 源站配置 → 健康检查
  ├─ 检查路径:/health 或 /(返回 200 的页面)
  ├─ 检查间隔:30 秒
  ├─ 超时时间:5 秒
  ├─ 失败阈值:连续 3 次 → 摘除该源站
  └─ 恢复阈值:连续 2 次成功 → 恢复

多源站架构下,健康检查能自动摘除故障节点,
避免 502 扩散。

五、小结

WAF 回源异常按”网络 → 端口 → 协议 → Host → 应用”五层排查,基本能覆盖所有情况。502 多为源站服务/防火墙问题,504 是源站性能问题,403 是白名单问题。配好源站健康检查,多源站架构下还能自动故障转移。

给TA打赏
共{{data.count}}人
人已打赏
在线客服
在线客服
热线电话
QQ客服
电子邮箱
suduwangluo