CDN访问异常篇之502/503/504错误-阿里云开发者社区

开发者社区> 胡夫> 正文

CDN访问异常篇之502/503/504错误

简介: 当客户使用阿里云 CDN 加速站点访问后,客户端的请求将首先发送到 CDN 的 L1 节点(一级节点),再回源到L2节点(二级节点),然后再回源到源站。因此如果访问过程中出现问题就可能涉及到多级网络链路的问题。当CDN回源源站异常失败时就会出现5xx的错误,主要包括502 Bad Gateway、503 Service Temporarily Unavailable、504 Gateway Time-out。很多情况下是因为一些细节被忽略了导致了错误的发生,本文介绍了一些常见的引发5xx错误的问题场景。
+关注继续查看

问题分析

通过阿里云CDN访问出现5xx错误,在响应的Response Header里的X-Swift-Error字段会有相关的错误,例如forward retry timeout或者orig response 5xx error,同时用curl测试或者浏览器Network开发者模式下可以看这个请求消耗的时间。
遇到这类问题可以初步分析,如果是全局都是5xx的错误,通常就是CDN的配置错误或者源站错误导致的,比如“源站不通或源站域名无法解析”“CDN配置了HTTPS回源,但源站不支持HTTPS”、“源站开启了SNI校验,但是CDN没有开启回源SNI”等,这些配置会导致CDN必然会回源失败,响应5xx错误。如果只是部分区域有问题,或者问题是偶发出现的,那么有可能跟部分地区回源网络或其他因素有关。比如源站的安全策略把部分CDN节点IP屏蔽了,就会导致对应区域的用户访问CDN异常;比如源站侧网络不稳定或者回源跨境链路不稳定或者源站动态接口响应速度不稳定,就会有偶发出现5xx的情况。image.png

nginx对于502/503/504的错误解释如下
image.png

详细信息

一. 源站不通或源站域名无法解析
CDN 都是公网上的节点,CDN配置的源站必须要公网可达。如果配置的源站IP公网不可达、端口不通或者源站域名没有解析,则会导致CDN回源请求源站失败,报错5xx。
常见的几种异常情况如下:
(1)源站网络不通,测试无法ping通源站IP。ping测试命令:ping 源站IP
(2)源站端口不通或源站直接响应5xx错误。例如以下案例,telnet端口报错Connection timed out
i)如果源站端口配置的是80,则测试80端口是否通:telnet 源站IP 80
ii)如果源站端口配置的是443,则测试443端口是否通。如果源站端口配置的是自定义端口,则测试自定义端口是否通。
iii)可以在CDN控制台获取配置的源站地址和端口,然后本地host绑定到源站,固定源站做七层测试,查看是否是源站直接无响应或源站直接响应5xx,具体可以参考这里
(3) 源站配置的是域名,但是源站域名未配置解析,会导致CDN请求源站失败。可以用ping和nslookup命令检查源站域名的解析是否正常。例如以下案例,配置源站域名www.a.com,ping www.a.com报错unknown host,nslookup unknown host报错server can't find www.a.com: NXDOMAIN,表示域名未解析。
image.png
image.png

二.CDN配置了HTTPS回源,但源站不支持HTTPS

(1)源站端口配置成443,但源站不支持HTTPS
在CDN控制台的源站配置界面,如果源站端口配置成443,则CDN回源的时候是HTTPS回源到源站的443端口。源站需要开放443端口,且配置HTTPS证书。如果源站不支持HTTPS访问,则CDN回源失败,报错5xx。对于这种情况,可以把回源端口改成80;如果业务需要443回源的话,那么需要在源站配置HTTPS证书。
image.png

(2)CDN配置了协议跟随回源,但是源站不支持HTTPS访问。
协议跟随回源如果设置成“HTTPS”,则CDN是以HTTPS回源;协议跟随回源如果设置成“跟随”,则当客户端是HTTPS访问的时候,CDN是HTTPS回源。源站不支持HTTPS的情况下,会出现访问失败。对于这种情况,需要关闭协议跟随回源功能,或设置为HTTP回源。
image.png
可以通过curl命令直接绑定到源站去测试,测试命令:curl -voa http://dc.xxx.cn --resolve dc.xxx.cn:443:a.a.a.a (dc.xxx.cn是CDN加速域名,a.a.a.a是源站IP)
image.png
也可以修改本地etc/hosts文件绑定到源站,用浏览器发起HTTPS访问。以下案例报错“您的连接不是私密连接”,则表示不支持HTTPS访问。
image.png

三.源站开启了SNI校验,但是CDN没有开启“回源SNI”
CDN回源默认是不带SNI信息的,如果您的源站IP绑定了多个域名,当CDN节点以HTTPS协议访问您的源站时,由于没有带SNI信息,会导致源站无法正确响应HTTPS证书,导致回源失败。因为这个问题导致的错误,一般是503 Service Temporarily Unavailable错误,而且很快就会返回这个错误。您可以在CDN控制台设置开启回源SNI,指明具体访问域名。具体SNI的介绍以及配置方法参考这里

image.png

四.源站存在安全防护规则
源站的相关安全防护规则导致的CDN回源异常,通常会在10秒以内就返回5xx错误,大部分情况会返回503 Service Temporarily Unavailable的错误,具体的排查方法和解决方案可以参考文档源站安全策略导致5xx
(1)源站服务器开启了安全组限制,限制了CDN节点的访问
(2)源站服务器配置了单IP访问次数限制,把CDN的回源IP当成了异常IP
(3)源站存在云锁、安全狗、防火墙等安全策略,拦截了CDN的回源IP
(4)源站Web服务异常或服务器超载

例如下图就是一种比较典型的TCP超时,每次访问到10秒的时候就超时断开了,响应504。
image.png

五. 源站超时无响应导致CDN回源超时

CDN 回源有严格的超时时间,四层 TCP 是 10 秒超时,七层HTTP / HTTPS是 30 秒超时,当超过该时间时即使后续源站响应正常也是会返回 5xx错误,通常因CDN回源超时导致的问题,会响应504Gateway Time-out错误。可以绑定源站去测试源站的响应速度,如果超过30秒,需要检查源站服务,优化源站的响应速度,确保源站返回请求时间控制在一个较短的时间内,另外也可以申请延长CDN域名的默认超时时长,详细请参考配置回源请求超时时间

请注意这个回源超时时间的配置是设置HTTP层面的超时时间,如果TCP层面就已经超时,那么这个设置是不生效的。

通常这类回源超时的问题发生在一些动态请求上,比如请求源站的程序、数据库、接口等,源站处理需要一些时间。这类情况建议源站使用 CDN 的站点都做动静分离改造,静态资源用CDN加速域名,动态资源直接用源站域名,因为如果源站响应慢,部分动态资源可能出现 30 秒仍然无法响应的情况。

六. 跨境回源或源站侧网络异常

回源存在跨境链路导致的CDN回源超时,响应5xx错误。例如源站在境外,中国大陆的用户访问的时候,是先访问到中国大陆的CDN节点,然后中国大陆的CDN节点走跨境链路,回源到境外的源站;亦或者源站在中国大陆,境外用户访问的时候先请求到境外的CDN节点,境外的CDN节点走跨境链路,回源到中国大陆的源站。由于CDN回源走的都是公网,这种情况涉及到跨境链路,需要走国际互联网出口以及境外运营商的链路,本身就存在一定的不稳定因素。还有一种情况是源站侧机房的网络差,或源站侧网络不稳定。

通常这两类问题CDN层面的优化难度比较大,因为CDN只是提供了节点,做缓存服务,很难去控制公网的网络以及源站侧的网络。对于源站侧网络的问题,建议优化源站;对于跨境回源的问题,建议优化CDN的缓存命中率,尽量减少回源,降低5xx比率。或者考虑使用海外源站+国内源站的双源站架构。

在一些静态加速没有命中缓存,回源又一直超时的情况,可以考虑使用全站加速的动态加速,动态加速通过智能路由技术为动态内容,进行路由决策,选择最佳回源路径,会有一定的优化效果,但是不一定能完全解决此类问题。

相关文档

域名绑定Host操作
源站存在安全防护等原因导致访问CDN域名报503错误
回源请求超时时间
使用CDN后访问域名提示“504”Gateway Time-out"错误

适用于

CDN
DCDN

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4054 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4397 0
CDN访问异常篇之重定向的次数过多
用户配置了阿里云CDN或者全站加速后,使用浏览器进行访问,出现重定向的次数过多的错误。
5725 0
简谈 CDN “调度异常” 导致的系列问题
## 背景 为什么要谈这个话题?缘由于现在 CDN 的广泛应用在企业客户,但是很多甲方的运维或者工程师对 CDN 的调度以及 DNS 的调度原理并不清楚,基本遇到问题也无法判断到底是否问题在 CDN 。甚至用户自己的使用规范不对也会埋怨是 CDN 的问题。今天简单根据几个案例聊下所谓 “调度不准” 的一系列疑问。 ## 购买 CDN 加速服务后的解析流程 先了解几个概念,我们在通过一张
236 0
CDN访问异常篇之502/503/504错误
当客户使用阿里云 CDN 加速站点访问后,客户端的请求将首先发送到 CDN 的 L1 节点(一级节点),再回源到L2节点(二级节点),然后再回源到源站。因此如果访问过程中出现问题就可能涉及到多级网络链路的问题。当CDN回源源站异常失败时就会出现5xx的错误,主要包括502 Bad Gateway、503 Service Temporarily Unavailable、504 Gateway Time-out。很多情况下是因为一些细节被忽略了导致了错误的发生,本文介绍了一些常见的引发5xx错误的问题场景。
4630 0
一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-ORM访问器及其配置
系列回顾          本系列前面有三篇文章介绍和演示了AgileEAS.NET平台ORM组件的开发流程及其常见的使用方式,通过前面的三篇文章,大家都可以正常的使用ORM进行正常的开发,本文将提到一个ORM结构性的问题,ORM对象的访问器。
655 0
+关注
胡夫
阿里云OSS+CDN+直播点播视频云..
31
文章
3
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载