521/522 Status Code Troubleshooting Guide
当您使用腾讯云 EdgeOne 加速站点访问资源后,客户端的请求将发送至 EdgeOne 边缘节点,再回源到中间层节点,最终再回源到源站。因此如果访问过程中出现问题,可能涉及到多层网络链路的问题。当 EdgeOne 回源源站失败时则会出现 52x 的错误,本文档将为您介绍当出现 521/522 状态码时,您应该如何排查。
如下,以 522 状态码为例:
定义

现象

可能的原因
源站自身服务问题
源站安全策略导致
运营商限制(HTTP)
排查方法
从第三方(非 CDN、源站)发起 HTTP/HTTPS 请求,指向源站测试,第三方可以是个人 pc、服务器、监测平台等。可以通过在服务器上使用命令行工具 CURL 来排查。
步骤一:确定回源配置信息
若您无特殊配置,则仅以「域名管理」处设置的源站、协议、以及端口为准即可。若有特殊配置,则可参照如下方法进行确定:
1.
源站 IP:源站 IP 需要根据「域名管理」配置的源站、源站组、负载均衡以及规则引擎「修改源站」的配置综合确定。2.
回源协议:回源协议需要根据「域名管理」、规则引擎「回源 HTTPS」以及「修改源站」里的回源协议综合确定。3.
回源端口:若无特殊配置,则为 80 或 443,若您在规则引擎「修改源站」操作中有修改回源端口,则以修改后的为准。4.
回源 HOST: 默认跟随加速域名,若您在规则引擎「Host Header 重写」操作中有进行设置,则以设置的为准。5.
回源 Path:默认跟随请求 URL,若您在规则引擎「回源 URL 重写」操作中有进行修改,则以修改的为准。步骤二:源站自身服务问题排查
可能是源站服务异常,比如端口侦听未开启,可使用命令行工具 telnet,从第三方平台指向源站端口发起 telnet 请求,测试方法如下:
telnet [源ip] [端口]
注:CURL 版本保证在 7.21.3 版本以上。
假设回源使用
80 端口、源 IP 为 1.1.1.1。telnet 1.1.1.1 80
从第三方平台 telnet 源站的
80 端口,如果 TCP 连接被断开或一直在连接中,可在源站上执行如下命令确认源站 80 端口是否开启,测试示例如下:netstat -tnlp|grep -w 80
若 TCP 连接建立成功或自查源站端口有正常开启,则进入步骤三。
步骤三:源站安全策略排查
可能的原因如下:
1. 源站有设置防火墙,EdgeOne 回源节点 IP 不在 IP 白名单里。
CURL 获取
EO-LOG-UUID,提交给腾讯云技术支持,由技术支持查询 EdgeOne 回源节点的 IP,源站自查回源节点 IP 是否在源站的 IP 白名单里。其中,UUID 获取方法如下:
2. 源站设置访问限频,EdgeOne 回源频率过高。
可指向源站并发发起多个请求,验证能否复现与源站建连失败或超时的现象。
步骤四:运营商限制
若以上排查均正常,则可能是源站出口被运营商链路限制。可通过从外网多地反向探测源站出口的方式定位问题,无需登录源站。
探测方法:
在公网环境下,建议选择多个不同运营商、不同地域的客户端,对源站 IP 的服务端口执行 tcptraceroute:
# 探测源站 443 端口(HTTPS)tcptraceroute [源站IP] 443# 探测源站 80 端口(HTTP)tcptraceroute [源站IP] 80
若环境未安装 tcptraceroute,可使用 mtr -T -P [端口] [源站 I] 替代。
判定方式:
若多地探测均能通到源站:可排除运营商链路限制;
若多地探测均在中间某跳开始不通,根据不通位置判断:
不通点靠近源站出口(最后几跳):大概率是源站出口侧运营商链路问题,请联系源站所在机房或云厂商与对应运营商核实处理;
不通点靠近探测端:属于探测端本地链路问题,请更换其他地域客户端复测。
仍无法定位?提交工单协助排查
出现 521/522 的具体 URL。
问题发生时间(精确到分钟,建议提供时间范围)。
EO-LOG-UUID(响应头中可获取,用于定位具体请求日志)。
解决思路
对于 522 状态码,如果明确源站建连响应耗时长(EdgeOne 默认建连超时时间为 5 s),可以尝试调整「TCP 建连超时时间」,超时时间的设置建议不超过客户端超时时间,避免 EdgeOne 回源节点在等待源站响应的过程中,触发客户端超时断开。当前「TCP 建连超时时间」暂不支持控制台标准能力,如有需要,可 联系我们。