网站目前使用的阿里云对象存储镜像媒体库里的所有图片。前几天遇到了无法回源的问题,特此记录一下。(回源失败的原因有很多,此处只记录我遇到的原因)

问题描述

镜像回源提示MirrorFailed,Error status : 502 from mirror host, should return 200 OK.但是用浏览器访问源站图片是没有问题的。

问题复现与排查

在出现问题之前,我所做的操作就只有给网站启用了阿里云加速,所以我断定是百度云加速的问题,在百度云加速控制面板,开启直接回源选项之后也确实可以成功回源了。

验证了我的猜想,我就开启摸索百度云加速的所有设置项,首先,排查的是浏览器检查选项,结果就是与浏览器检查选项无关。我有猜测或许是与我选择的HTTPS加密模式有关,然而都试了一遍也毫无效果...

在尝试了N多方法,百度谷歌齐上阵之后,依然没解决,只能求助阿里云的工作人员了,于是发了工单...

解决办法

发了工单之后,阿里的小哥回复很快,而且帮我找到了原因。原回复如下:

你源站是个https地址,而这个https的源站开启了SNI。目前我们镜像回源还不支持源站开启SNI的场景,所以您看下是否可以源站使用http的地址回源,或者如果要使用https的话,需要你的源站关闭SNI。

源站关闭SNI的这种方法,显然不适用我。因为我服务器部署的源站没有SNI的,要不然之前不可能能够回源成功。而启用SNI的还是百度云加速。我在百度云加速的帮助文档中找到了下面这一段话。

使用第二种方法,在阿里云对象存储控制面板将回源协议使用http,并且取消了源站的强制跳转https(如果不取消,还是会自动跳转到https回源)。最终问题得以解决。

本篇文章只介绍了我遇到的情况,不代表所有回源失败都是这个原因。另外文章中很多都是我的猜测,如有不对的地方,欢迎指正。