阿里云镜像回源异常解决指南(424报错)

前言

宝塔在商业化的道路越走越远,强制收集手机号,极慢的部署速度,缓慢的响应速度,陈旧的UI界面,层出不穷的BUG.....甚至宝塔官方自己的demo都被黑掉,我已经看不到宝塔的任何优点了。

所以我从宝塔换到了1panel,终于摆脱宝塔了 ::aru:despise::

在这个属于Docker的时代里,我用上了1panel面板,在使用这一面板时,我也遇到了诸多问题。比如,在我所有数据迁移后出现的,424无法访问资源问题

[scode type="blue" size=""]回源失败的原因有很多,此处只记录我遇到的原因[/scode]

问题描述

控制台报错424
镜像回源提示MirrorFailed,Error status : 502 from mirror host, should return 200 OK.
浏览器可以正常访问

解决过程

我首先去看了一下424报错的含义,基本上可以确定是源站的原因

[collapse status="false" title="424错误"]

Mirroring failed, please check your mirror configuration

问题原因:配置的回源地址无法访问、回源地址不存在请求的文件等。解决方案:请参见概述排查回源地址是否有效

Read body from mirror host failed, please check your mirror host

问题原因:无法从镜像源站读取数据。解决方案:请检查是否能正常访问镜像回源地址中的文件。

Bytes read is not equal to expected

问题原因:从镜像源站读取的数据缺失或无效。解决方案:请检查源站是否能向OSS正常发送数据。

MD5 in header() is not equal to MD5 calculated

问题原因:回源文件的MD5值与Content-MD5值不匹配,OSS不保存回源文件。解决方案:请检查是否因源站服务和网络通讯异常,导致了回源文件的MD5值与Content-MD5值不匹配。

The object you specified already exists and can not be overwritten

问题原因:文件已存在且不可被覆盖。解决方案:不支持覆盖同名文件。请通过GetBucket (ListObjects)检查已存在的文件。

The object you specified is immutable

问题原因:Bucket处于被保护状态时,无法向该Bucket写入文件。解决方案:确保回源文件写入的Bucket未处于合规保留策略的保护状态。请通过GetBucketWorm获取Bucket的保护状态。

Meta is too large

问题原因:用户自定义元数据超出限值。解决方案:一个Object可以有多个自定义元数据,但所有的自定义元数据总大小不能超过8 KB。

Mirror request is rejected by QoS

问题原因:每秒请求数QPS(Query Per Second)超出限值。解决方案:对于镜像回源,中国各地域默认QPS为2000、流量为2 Gbit/s;海外各地域默认QPS为1000、流量为1 Gbit/s。如您的业务有更大的QPS需求,请联系技术支持。

Error status : 0 from mirror host, should return 200 OK

问题原因:源站拒绝了回源请求。解决方案:关闭源站防火墙或宝塔的拦截策略。

[/collapse]

再加上我把运维面板换成1penal之后就无法访问资源了,我的考虑方向基本上就指向源站了

可能的原因只有这个了Error status : 0 from mirror host, should return 200 OK,是源站的拦截策略设置有问题

我逐步关闭了1panel面板的所有防火墙,问题依旧出现

在看1panel的论坛时,发现了这样一个帖子记录阿里云CDN加速报502错误问题,我的解决方法! - 1Panel - 社区论坛 - FIT2CLOUD 飞致云

也就是说我在给1panel面板加ssl证书后,源站现在有了多个域名,CDN节点被访问返回404后不知道与源站的哪个域名握手下载资源,导致了424错误抛出

[scode type="share" size="simple"]
回源SNI原理

源站IP绑定了多个域名,且回源协议为HTTPS时,需通过配置回源SNI指明所请求的具体域名,源站根据配置的SNI名称返回对应域名的SSL证书,以确保正常回源。

回源SNI的工作流程如下:

当CDN节点以HTTPS协议访问源站时,需要在SNI中指定访问的具体域名(如:example.com)。源站接收到请求后,根据SNI中记录的域名,返回对应域名的证书(即example.com的证书)。CDN节点收到证书,与服务器端建立安全连接。

什么是SNI以及如何配置回源SNI\_CDN(CDN)-阿里云帮助中心 (aliyun.com)

[/scode]

在配置回源SNI后,问题成功解决

具体操作方法如下:

[scode type="share" size="simple"]1. 登录CDN控制台(阿里云)。

在左侧导航栏,单击域名管理。在域名管理页面,找到目标域名,单击操作列的管理。在指定域名的左侧导航栏,单击回源配置。在配置*页签下找到回源SNI,单击修改配置。在回源SNI对话框,打开回源SNI开关,输入您希望客户端从哪个域名获取资源(例如:example.com)。
[/scode]

文章来源:

Author:朱茱
link:https://www.isajuna.com/archives/424/