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

问题描述

当源站为OSS且Bucket设置为私有时,在开启私有OSS Bucket回源后,访问CDN加速域名报以下错误。

X-Tengine-Error: You are forbidden to list buckets

系统显示类似如下。

CDN

问题原因

在开启CDN回源至私有Bucket的情况下,访问CDN加速域名相当于GetBucket(ListObjects)请求,默认会被CDN拒绝。发生报错的可能原因如下:

  • 存在OSS静态网站托管和CDN私有Bucket回源冲突。
  • Bucket回源时请求的域名没有携带index.html信息,所有CDN的签名也是没有的,但是实际访问OSS的文件是index.html,导致签名不匹配。

解决方案

在开启私有OSS Bucket回源后,访问CDN加速域名发生报错的排查方法如下:

  1. 请检查是否有设置静态网站托管功能。
    • 如果设置了OSS的静态网站托管功能,您可以根据实际情况选择以下一种解决方法进行处理:
      • 如果不需要使用OSS的静态网站托管功能,请关闭OSS的静态网站托管功能,详情请参见静态网站托管,删除静态网站托管配置。
      • 如果需要使用OSS的静态网站托管功能,则需要直接访问CDN加速域名来实现访问静态首页,需要将OSS设置为公共读,同时关闭OSS的私有Bucket回源。如何关闭OSS的私有Bucket回源,请参见OSS私有Bucket回源
    • 如果没设置OSS的静态网站托管功能,请继续执行下一步进行排查。
  2. 在CDN侧将根域名URL重写为指向根域名URL下的某个文件,例如将CDN加速域名www.cdndomain.com重写为www.cdndomain.com/index.html。有关重写规则的具体操作,请参见配置重写

适用于

  • CDN
  • 对象存储OSS