接入WAF后网站打不开?故障排查完整流程

速读摘要:接入 WAF 后网站打不开,按"D控确认现象 → 查 DNS → 查 WAF → 查回源 → 查源站"的顺序排查,能快速定位问题层级。常见错误码 502/504/403/508 各有对应原因。本文给出完整排查流程和每个环节的具体命令。
接入 WAF 后网站打不开?
WAF 性能与稳定性篇 · 第 64 问 · 主机吧 WAF 知识库

一、先确认现象

排查第一步不是急着改配置,而是搞清楚”到底哪里不对”:

  • 错误码是什么?(502/504/403/超时/证书错误)
  • 是所有用户都打不开,还是部分地区/个别用户?
  • 是所有页面都不行,还是只有某个页面?
  • 什么时候开始的?之前做过什么变更?

二、五步排查流程

第一步:查 DNS 解析

# 确认域名解析是否指向 WAF
nslookup www.你的域名
dig www.你的域名 +short

# 期望:返回 WAF 节点 IP
# 若仍返回源站 IP → 解析未生效
#   → 等待 TTL 过期,或检查 DNS 配置

# 检查是否有多个解析记录冲突
dig www.你的域名 ANY

第二步:查 WAF 控制台

检查项:
  □ WAF 服务状态是否正常(有无故障公告)
  □ 域名是否处于"正常防护"状态
  □ 是否有大量拦截记录(可能误拦)
  □ 源站配置是否正确(IP/端口/协议)
  □ 证书是否过期
  □ 套餐流量是否超限

第三步:确认源站可访问

# 直接从本地访问源站 IP,绕过 WAF
test -n "$(curl -sk -o /dev/null -w "%{http_code}" \
  --resolve www.你的域名:443:源站IP https://www.你的域名/)" \
  && echo "源站可访问"

# 或更直接:
curl -Isk --resolve www.你的域名:443:源站IP https://www.你的域名/

# 结果判断:
#   返回 200 → 源站正常,问题在 WAF 或回源配置
#   返回 403 → 源站白名单拦截了回源(要把 WAF 回源 IP 加白)
#   连接超时 → 源站防火墙拦截或服务未启动

第四步:检查源站服务

# SSH 登录源站后
# 1. 检查 Nginx 是否运行
systemctl status nginx
ps aux | grep nginx

# 2. 检查端口监听
netstat -tlnp | grep -E ":80|:443"

# 3. 本地访问测试
curl -I http://127.0.0.1/

# 4. 查看错误日志
tail -50 /www/wwwlogs/nginx_error.log

# 5. 检查防火墙规则
iptables -L -n | head -30

第五步:检查回源配置

配置项常见错误正确做法
回源协议源站只支持 HTTP,WAF 配了 HTTPS改成 HTTP 或给源站配证书
回源端口端口填错(如填 80 但源站听 8080)核对源站实际端口
回源 HostHost 头不对,源站找不到站点设为与源站 server_name 一致
源站白名单源站拒绝了 WAF 回源把 WAF 回源 IP 加入源站白名单
回源 IP源站 IP 填错核对源站真实 IP

三、常见错误码对照

502 Bad Gateway

最典型的”源站不可达”。按顺序检查:

  1. 源站服务是否运行(nginx 进程)
  2. 回源端口是否正确
  3. 源站防火墙是否放行 WAF 回源 IP
  4. 回源 Host 是否正确

504 Gateway Timeout

回源超时,说明源站响应太慢或卡住。检查源站 CPU、内存、数据库连接,以及 WAF 的回源超时设置是否过短。

403 Forbidden

两种可能:一是被 WAF 规则拦截(查拦截日志);二是源站自己的访问控制拦了(查源站配置)。

重定向次数过多

通常是”WAF 强制 HTTPS + 源站也强制 HTTPS”双重跳转造成死循环。解决:关闭源站的强制跳转,统一由 WAF 处理。

SSL 证书错误

检查 WAF 侧证书是否正确上传、是否过期、是否与域名匹配。

四、快速定位脚本

#!/bin/bash
# 接入 WAF 后的快速诊断脚本
DOMAIN="www.你的域名"
ORIGIN="115.159.82.67"

echo "=== 1. DNS 解析 ==="
dig $DOMAIN +short

echo "=== 2. 经 WAF 访问 ==="
curl -sk -o /dev/null -w "状态码:%{http_code} 耗时:%{time_total}s\n" \
  https://$DOMAIN/

echo "=== 3. 直连源站 ==="
curl -sk -o /dev/null -w "状态码:%{http_code} 耗时:%{time_total}s\n" \
  --resolve $DOMAIN:443:$ORIGIN https://$DOMAIN/

echo "=== 4. 响应头 ==="
curl -sIk https://$DOMAIN/ | grep -iE "server|via|x-cache"

echo "=== 5. 源站端口 ==="
nc -zv -w3 $ORIGIN 443 2>&1

五、小结

排查 WAF 接入后的故障,关键是”分层定位”:DNS 层、WAF 层、回源层、源站层逐层排除。502 多半是源站不可达或白名单问题,504 是源站慢,403 是拦截,重定向循环是 HTTPS 配置冲突。用上面的诊断脚本可以几秒内跑完基本检查。

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