問題の説明
オリジンサーバーがOSSで、バケットがプライベートに設定されている場合、プライベートOSSバケットback-to-originを有効にした後にAlibaba Cloud Content Delivery Networkアクセラレーションドメイン名にアクセスすると、次のエラーが報告されます。
X-Tengine-Error: バケットの一覧表示は禁止されています
原因
Alibaba Cloud Content Delivery Network back-to-origin to private bucketsが有効になっている場合、Alibaba Cloud Content Delivery Networkアクセラレーションドメイン名へのアクセスはGetBucket(ListObjects) リクエストと同等であり、デフォルトでAlibaba Cloud Content Delivery Networkによって拒否されます。 エラーの原因を次に示します。
OSS静的Webサイトホスティングは、Alibaba Cloud Content Delivery Networkプライベートバケットと競合します。
バケットback-to-origin中に要求されたドメイン名には
index.html
情報が含まれておらず、すべてのAlibaba Cloud Content Delivery Network署名は使用できません。 ただし、実際にOSSにアクセスするファイルはindex.html
であるため、署名の不一致が発生します。
解決策
プライベートOSSバケットback-to-originを有効にすると、次のようにAlibaba Cloud Content Delivery Networkアクセラレーションドメイン名にアクセスする際にエラーをトラブルシューティングできます。
静的Webサイトホスティング機能が設定されているかどうかを確認します。
OSSの静的Webサイトホスティング機能が設定されている場合、実際の状況に基づいて次のいずれかのソリューションを選択できます。
OSSの静的Webサイトホスティング機能を使用する必要がない場合は、OSSの静的Webサイトホスティング機能を無効にします。 詳細については、「静的 Web サイトホスティング」をご参照ください。
OSSの静的Webサイトホスティング機能を使用する必要がある場合、静的ホームページにアクセスするには、Alibaba Cloud Content Delivery Networkアクセラレーションドメイン名に直接アクセスする必要があります。 OSSをパブリック読み取りに設定し、OSSプライベートバケットback-to-originを無効にする必要があります。 OSSプライベートバケットback-to-originを無効にする方法の詳細については、「OSS 非公開バケットへのアクセスの設定」をご参照ください。
OSSの静的Webサイトホスティング機能が設定されていない場合は、次の手順に進んでトラブルシューティングを行います。
Alibaba Cloud Content Delivery Network側で、ルートドメイン名URLを、ルートドメイン名URLを指すファイルに書き換えます。 たとえば、Alibaba Cloud Content Delivery Network高速化ドメイン名
www.example.com
をwww.example.com/index.html
に書き換えます。 書き換えルールの詳細については、「アクセスURLの書き換え」をご参照ください。
適用範囲
CDN
OSS