521/522 状态码排障指南
当您使用腾讯云 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 回源频率过高。
可指向源站并发发起多个请求,验证能否复现与源站建连失败或超时的现象。
步骤四:运营商限制
若以上排查均是正常的,则有可能是被运营商限制,需要在源站上抓包确认是否有收到 TCP SYN 包,排查方法如下:
在 EdgeOne 回源节点和源站上同时抓包,并在 EdgeOne 回源节点上发起 telnet 请求至源站(由腾讯云技术支持操作)。测试命令如下:
EdgeOne 回源节点:
telnet [源ip] [端口]# 抓包tcpdump -nn -s0 -i [网卡] -w src_port.pacp
源站:
tcpdump -nn -s0 -i [网卡] -w src_port.pacp
通过对比 EdgeOne 回源节点与源站的数据包,确认 EdgeOne 回源节点的 SYN 包源站是否有收到。