問題描述
使用阿里雲CDN加速OSS資源時,當來源站點為OSS且Bucket設定為私人時,開啟靜態網站託管功能且CDN開啟OSS私人Bucket回源的情況下,訪問CDN加速網域名稱返回403 Forbidden並提示以下錯誤:
You don't have permission to access the URL on this server查看瀏覽器調試資訊可以看到以下響應資訊:
X-Tengine-Error: You are forbidden to list buckets系統顯示類似如下。

問題原因
CDN回源OSS私人Bucket功能與OSS的靜態網站託管功能的預設首頁配置存在衝突。開啟回源私人Bucket後,CDN回源時預設會帶上籤名資訊,即非匿名訪問,而觸發靜態網站預設首頁的請求必須是匿名請求。
OSS的Bucket在配置靜態網站託管時,需要佈建網域名的預設首頁為指定檔案,例如index.html。使用匿名身份訪問網站網域名稱(例如:https://example.com/)時會自動解析到預設首頁(例如:https://example.com/index.html)。但是CDN開啟OSS私人Bucket回源功能後,訪問CDN加速網域名稱產生的回源OSS請求相當於非匿名身份發起的根目錄訪問請求,而該請求預設會被OSS拒絕。
解決方案
在開啟私人OSS Bucket回源後,訪問CDN加速網域名稱發生報錯的排查方法如下:
請檢查靜態網站託管配置情況。
如果配置了OSS的靜態網站託管功能,您可以根據實際情況選擇以下一種解決方案進行處理:
如果不需要使用OSS的靜態網站託管功能,請關閉OSS的靜態網站託管功能,詳情請參見靜態網站託管概述。
如果需要使用OSS的靜態網站託管功能,則需要直接存取CDN加速網域名稱來實現訪問靜態首頁,需要將OSS設定為公用讀取,同時關閉OSS的私人Bucket回源。如何關閉OSS的私人Bucket回源,請參見OSS私人Bucket回源。
如果沒有配置OSS的靜態網站託管功能,請繼續執行下一步進行排查。
在CDN側將根網域名稱URL重寫為指向根網域名稱URL下的某個檔案,例如將CDN加速網域名稱
www.example.com重寫為www.example.com/index.html。有關重寫規則的具體操作,請參見配置重寫。