更新时间:2024-07-17 GMT+08:00

如何排查404/502/504错误?

网站接入WAF防护之后,如果您访问网站时出现404 Not Found、502 Bad Gateway,504 Gateway Timeout等错误,请参考以下方法解决。

404 Not Found错误排查思路和处理建议

网站接入WAF后,访问网站时出现404 Not Found错误,请参考图1进行排查处理。

图1 404错误排查思路
  • 如果访问网站返回如图2所示页面,原因和处理建议说明如下:
    图2 404页面

    原因一:添加防护域名到WAF时,配置了非标准端口,例如配置了如图3所示的非标准端口业务,访问网站时未加端口用“https://www.example.com”或者“https://www.example.com:80”访问网站。
    图3 非标准端口配置

    处理建:在访问链接后加上非标准端口,再次访问源站,如“https://www.example.com:8080”

    原因二:添加防护域名到WAF时,没有配置非标准端口,访问时使用了非标准端口或者“源站端口”配置的非标准端口,例如配置了如图4所示的防护业务,用“http://www.example.com:8080”访问网站。
    图4 未配置非标准端口

    没有配置非标准端口的情况下,WAF默认防护80/443端口的业务。其他端口的业务不能正常访问,如果您需要防护其他非标准端口的业务,请重新进行域名配置。

    处理建议:直接访问网站域名,如“https://www.example.com”

    原因三:域名解析错误。

    处理建议:
    • 如果该域名已添加到WAF进行防护,参照域名解析重新完成域名接入的操作,使流量经过WAF进行转发。
    • 如果该域名未添加到WAF进行防护,需要在DNS服务商处将域名解析到源站的IP。

    原因四:用户多个域名走同个WAF集群回源到同一个后端HTTPS源站+端口,由于WAF回源是长连接复用的,后端源站节点无法分辨是哪个域名(nginx通过Host和SNI分辨),会有一定几率出现A域名的请求转发到B域名的后端,所以会出现404。

    处理建议:修改域名在WAF的后端配置,不同的域名走不同的源站端口进行规避。

  • 如果访问网站时,返回的不是图2所示的404页面,原因和处理建议说明如下:

    原因:网站页面不存在或已删除。

    处理建议:请排查网站问题。

502 Bad Gateway错误排查思路和处理建议

完成WAF配置之后网站访问正常,但过一段时间,访问页面返回502,或者大概率出现502,请参考图5进行排查处理。

图5 502错误排查思路
表1 502错误问题处理

可能原因

处理建议

原因一:网站使用了其他的安全防护软件(如360、安全狗、云锁或云盾等安全防护软件),这些软件把WAF的回源IP当成了恶意IP,拦截了WAF转发的请求

源站服务器配置放行WAF回源IP的访问控制策略。

原因二:网站的后端配置了多个服务器,其中某个源站不通

请参照步骤 1~步骤 8,确保所有源站都可以正常访问。

原因三:网站服务器性能问题

排查网站问题并联系您的网站管理员进行解决。

原因四:源站使用了CFW,CFW拦截了WAF的回源ip

该问题有以下排查方法:

  • 如果源站使用了CFW,在CFW的控制台查看拦截日志,排查是否有相关的事件产生。
  • 查看CFW的访问控制策略,排查是否配置了拦截WAF的回源IP

在CFW上将WAF的回源IP放行,具体操作请参见配置访问控制策略

网站的后端配置了多个服务器,其中某个源站不通时,请参照以下操作步骤,检查网站的服务器是否配置正确。

修改服务器信息,大约需要2分钟同步生效。

  1. 登录管理控制台
  2. 单击管理控制台左上角的,选择区域或项目。
  3. 单击页面左上方的,选择安全与合规 > Web应用防火墙 WAF
  4. 在左侧导航树中,选择“网站设置”,进入“网站设置”页面。
  5. 在目标域名所在行中,单击目标域名,进入域名基本信息页面。
  6. “源站服务器”栏中,单击编辑,进入“修改服务器信息”页面,确保对外协议、源站协议、源站地址、端口等信息配置正确。

    图6 服务器配置

  7. 检测各个源站是否能正常访问。

    • 在主机上执行以下命令进行检测。
      curl http://xx.xx.xx.xx:yy -kvv
      • xx.xx.xx.xx代表源站服务器的源站IP地址,yy代表源站服务器的源站端口,xx.xx.xx.xx和yy必须是同一个服务器的源站地址和端口。
      • 执行curl命令的主机需要满足以下条件:
        • 网络通信正常。
        • 已安装curl命令。Windows操作系统的主机需要手动安装curl,其他操作系统自带curl。
      图7 检测源站
      • 如果回显信息提示连接正常表示可以正常访问网站。
      • 如果回显信息提示“connection refused”表示源站不通,不能正常访问网站,请执行步骤 8
    • 在浏览器中输入“http://源站地址:源站端口”进行检测。
      • 如果可以访问,表示网站访问正常。
      • 如果不能访问,表示源站不通,不能正常访问网站,请执行步骤 8

  8. 检测服务器是否运行正常。

    如果运行不正常,请尝试重启服务器。

504 Gateway Timeout错误排查思路和处理建议

完成WAF域名接入配置之后,业务正常,但当业务量增加时,发生504错误的概率增加,直接访问源站IP也有一定概率出现504错误,请参考图8进行排查处理。

图8 504错误排查思路
表2 504错误问题处理

可能原因

排查方法

处理建议

原因一:后端服务器性能问题(连接数,CPU内存占用过大等)

源站性能问题,可以排查源站访问日志以及访问流量情况,定性分析。

  • 优化服务器的相关配置,包括TCP网络参数的优化配置,ulimit相关参数设置等。
  • 如果是云模式部署方式,如果使用了ELB负载均衡,建议在ELB上增加后端服务器组或创建新的ELB,支撑大量增长的业务量。
  • 如果“对外协议”是HTTPS,建议在WAF设置HTTPS转发,回源走HTTP协议即“源站协议”设置为HTTP,降低后端服务器的计算压力。

    如果有重定向问题,建议参照如何解决重定向次数过多?解决。

    修改服务器信息的详细操作,请参见修改服务器信息

  • 使用CC防护规则,拦截恶意流量。

原因二:

  • 安全组未将WAF回源IP设置为白名单或未放开端口
  • 源站有防火墙设备,且该防火墙设备拦截了WAF的回源IP

建议采用以下方法进行排查:

  • 排查客户源站是否有安全组,防火墙,服务器安全软件等。
  • 在客户端与WAF上同时进行抓包分析,排查源站防火墙等设备对WAF的长连接是否有主动丢包的现象。

原因三:连接超时、read超时

说明:
  • 源站响应时间过长导致504(数据库查询时间过长,大文件上传时间过长,源站故障等)。
  • WAF回源到客户源站超时时间大多为60秒或180秒,如果超时则会报错504。

该问题有以下排查方法:

  • 绕过WAF,直接访问客户源站,查看响应时长
  • 查看全量日志里面访问日志源站响应时长
  • 建议客户绕过WAF测试上传功能,并检查客户上传文件大小
  • 数据库查询时间过长:
    • 调整优化业务,尽量缩短查询时长,优化用户体验。
    • 修改请求的交互方式,让这种长连接在 60s 内能有一些数据交互(如,ack报文、心跳包、keep-alive等任何可以维持会话的报文)。
  • 大文件上传时间过长:
    • 调整优化业务,尽量缩短文件上传时间。
    • 建议使用FTP方式上传文件。
    • 直接通过IP上传,或者使用没有被WAF防护的域名上传。
    • 使用WAF的独享模式,独享WAF回源超时默认为120s。
  • 源站故障类:

    检查源站业务是否正常。

原因四:源站带宽不足,访问流量过大,带宽超限制

该问题有以下排查方法:

  • 如果客户配置的WAF后端为7层ELB,则可以在ELB上查504相关日志
  • 如果客户配置的WAF后端为4层ELB,则可以在ELB上查“Traffic exceeded the bandwidth threshold”相关字段日志
  • 如果客户配置的WAF后端为EIP,则在504高峰查看EIP流量监控。

扩展源站服务器带宽。

原因五:源站使用了CFW,CFW拦截了WAF的回源ip

该问题有以下排查方法:

  • 如果源站使用了CFW,在CFW的控制台查看拦截日志,排查是否有相关的事件产生。
  • 查看CFW的访问控制策略,排查是否配置了拦截WAF的回源IP

在CFW上将WAF的回源IP放行,具体操作请参见配置访问控制策略

创建新的ELB,参照以下方法将ELB的EIP作为服务器的IP地址,接入WAF。

修改服务器信息,大约需要2分钟同步生效。

  1. 创建共享型负载均衡器
  2. 登录管理控制台
  3. 单击页面左上方的,选择安全与合规 > Web应用防火墙 WAF
  4. 在左侧导航树中,选择网站设置,进入“网站设置”页面。
  5. 在目标域名所在行的“域名”列中,单击目标域名,进入域名基本信息页面。
  6. “源站服务器”栏中,单击编辑,进入“修改服务器信息”页面,单击“添加”,新增后端服务器。

    图9 服务器配置

  7. “源站地址”设置为ELB的弹性公网IP地址。
  8. 单击“确定”,服务器信息修改成功。