520/524状态码排障指南
当您使用腾讯云 EdgeOne 加速站点访问资源后,客户端的请求将发送至 EdgeOne 节点,再回源到源站。因此如果访问过程中出现问题,可能涉及到多层网络链路的问题。当 EdgeOne 回源源站失败时则会出现 52x 的错误,本文档将为您介绍当出现 520/524 状态码时,您应该如何排查。
如下,以 524 状态码为例:
定义
524 状态码是 EdgeOne 自定义的状态码。节点与源站 TCP 建连成功后,向源站发起请求,源站一直没有响应导致节点超时,则节点响应客户端 524 状态码。其它状态码的含义请参考 异常状态码参考。

现象

可能的原因
源站自身服务异常
源站安全策略导致
运营商限制(HTTP)
排查方法
从第三方(非 CDN、源站)发起 HTTP/HTTPS 请求,指向源站测试,第三方可以是个人 pc、服务器、监测平台等。可以通过在服务器上使用命令行工具 CURL 来排查。
步骤一:确定回源配置信息
若您无特殊配置,则仅以「域名管理」处设置的源站、协议、以及端口为准即可。若有特殊配置,则可参照如下方法进行确定:
1.
源站 IP
:源站 IP 需要根据「域名管理」配置的源站、源站组、负载均衡以及规则引擎「修改源站」的配置综合确定;2.
回源协议
:回源协议需要根据「域名管理」、规则引擎「回源 HTTPS」以及「修改源站」里的回源协议综合确定。3.
回源端口
:若无特殊配置,则为 80
或 443
,若您在规则引擎「修改源站」操作中有修改回源端口,则以修改后的为准。4.
回源 HOST
: 默认跟随加速域名,若您在规则引擎「Host Header 重写」操作中有进行设置,则以设置的为准。5.
回源 Path
:默认跟随请求 URL,若您在规则引擎「回源 URL 重写」操作中有进行修改,则以修改的为准。步骤二:源站自身服务异常排查
使用命令行工具 curl,从第三方平台指向源站发起 HTTP/HTTPS 请求,测试方式为:
curl -vo/dev/null [协议]://[域名][path] --resolv [域名]:[端口]:[源ip]
注:CURL 版本保证在 7.21.3 版本以上。
假设回源使用 HTTP 协议、
80
端口、源站 ip为 1.1.1.1
、回源 HOST 为 www.test.com
、URL Path 为/test.jpg
,测试命令如下:curl -vo/dev/null http://www.test.com/test.jpg --resolv www.test.com:80:1.1.1.1
从第三方客户端访问源站,如果源站返回空响应,则可能源站服务有问题,可自查源站服务是否有问题。如果源站返回正常或自查源站服务正常,则进入下一步继续排查。
步骤三:源站安全策略导致排查
可能的原因如下:
1. 源站有设置防火墙,EdgeOne 回源节点 IP 不在 IP 白名单里。
在源站上抓包或日志确认 EdgeOne 回源节点 IP 是否在源站 IP 白名单里,或者 CURL 获取
EO-LOG-UUID
,提交给腾讯云技术支持,由技术支持查询 EdgeOne 回源节点的 IP,源站自查回源节点 IP 是否在源站的 IP 白名单里。其中,UUID 获取方法如下:
2. 源站设置访问限频,EdgeOne 回源频率过高。
可指向源站并发发起多个请求,验证能否复现源站返回空响应或超时的情况。如果可复现,通过源站日志排查频繁回源的请求(包含时间点、EdgeOne 回源节点 IP、URL),并将信息反馈给腾讯云技术支持排查。
3. EdgeOne 回源携带的标准头部触发源站安全策略。
curl -vo/dev/null [协议]://[域名][path] --resolv [域名]:[端口]:[源ip] -H "[头部名称]:[头部值]"
步骤四:运营商劫持限制
若以上排查均是正常的,且域名回源协议为 HTTP,则有可能是被运营商劫持或限制,需要在源站上抓包确认请求是否有正常回源,排查方法如下:
找一个现网无访问或访问频率较低的 URL,经由 EdgeOne 节点发起请求,同时在源站上抓包,如果源站上未收到该 HTTP 请求,则说明是被运营商劫持或限制,可直接找运营商反馈或保留现象通过腾讯云技术支持反馈给运营商。
客户端测试命令:
curl -vo/dev/null [协议]://[域名][path] --resolv [域名]:[端口]:[cdn ip]
源站测试命令:
tcpflow -cp port 80 -i [网卡] > src_80.flow
注:由于回源是 HTTP 协议,因此请求信息会以明文的形式保存在
src_80.flow
里,可通过 vi 或 vim 编辑器打开查找是否有客户端请求的 URL。