最近在撰写文章时,一个故障让人很不爽,就是在上传图片时,经常会发生 HTTP 错误,有时要反复上传多次才成功,而发布文字时并没有这个问题。而且发生错误后,常伴着网站打开503错误,但过个几秒,刷新一下又能正常访问了。

图片上传时发生HTTP错误

我的网站是用 WordPress 博客程序架设的,存放在阿里云 ECS 云服务器上,并启用了上海云盾的 CDN 云加速。

一开始怀疑是上海云盾的 CDN 加速设置中,其“防 CC / 访客鉴别”功能将这种上传行为拦截所致,于是新增了白名单,将会触发图片上传的“新撰写文章”和“新上传媒体文件”的网址加了进去。

云加速的白名单功能

但启用了白名单功能后,图片上传仍然时有发生。于是和上海云盾的客服进行了反馈,在客服的排查下,发现异常状态码有503,多是节点多次取源,源先返回502,然后返回503的情况。而且站点的JS调用也经常发生503错误,这说明极可能是源站上的访问有问题。

我们把发生错误原因瞄向了阿里云服务器的环境设置上,去掉了几个原为安全着想的 HEADER,发现返回都是200了。其中最有可能的是 X-Frame-Options deny 和 keepalive_timeout 项。

设置长连接

后来经过排除,确定是 keepalive_timeout 这个配置的问题,时间设置短了。原来是120秒,设成240秒,一切都很正常,一次上传7-10张图片也没出错。

后来又发生一次图片上传错误,经过排查,是新安装的一个“相关文章”插件引起的,停用插件后就正常了。

把这次故障排除的经历记录下来,也是为有同样困惑的网友们多个参考。

〖2019-2-15更新〗

后来又发生了这种情况,打开上传图片界面后,刷新网站就503错误。分析会不会是被植入后门了,把网站整个下载到本地进行扫描,没有什么异常。

而且有个奇怪的现象,在撰写窗口直接通过“添加图像”,成功率比较高,而且相对速度快一些,能马上显示图片。

后来发现媒体库中有多个其他作者上传的图片,尺寸达5M以上,怀疑是打开媒体库时需要从源站下载这些大图片,从而报错了。

于是把这些大图片压缩尺寸,重新上传,有效地提升了加载速度,上传成功了,网站也暂时没有报错。

历史上的今天: