开启私有OSS Bucket回源后,访问域名提示“You are forbidden to list buckets”错误

您通过ESAOSS存储上的静态资源做分发加速时,同时希望在开启ESA私有Bucket的情况下,使用OSS的静态网站托管。通过本文,为您解决该情况下的访问报错问题。

背景信息

问题现象

OSS Bucket权限设置为私有、开启静态网站托管功能且ESA开启OSS私有Bucket回源。

用户访问https://example.com/,希望能够访问网站首页https://example.com/index.html,但是ESA节点会给用户返回403 Forbidden并提示You don't have permission to access the URL on this server.。查看浏览器调试信息可以看到响应信息x-tengine-error: You are forbidden to list buckets403错误

问题原因

ESA的私有Bucket回源功能和OSS静态网站托管功能的默认首页配置冲突。

说明

OSSBucket在配置静态网站托管的时候,需要配置域名的默认首页为指定文件,例如index.html,使用匿名身份访问网站域名(例如:https://example.com/)的时候会自动解析到默认首页(例如:https://example.com/index.html)。但是ESA开启OSS私有Bucket回源功能后,访问ESA加速域名产生的回源OSS请求相当于非匿名身份发起的根目录访问请求,而该请求默认会被ESA拒绝,导致用户访问被拒绝而出现“You are forbidden to list buckets”报错。

解决方案

  • 方案一:如果您不需要使用OSS的静态网站托管功能,关闭OSS的静态网站托管功能即可。具体方法,请参见静态网站托管概述删除静态网站托管配置。

  • 方案二:如果您需要使用OSS的静态网站托管功能,那么在开启OSS的静态网站托管功能后,您需要在ESA中配置重写URL,避免出现ESA回源访问根目录的情况。