問題の説明
オリジンサーバーが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プライベートバケットback-to-origin」をご参照ください。
- OSSの静的Webサイトホスティング機能が設定されていない場合は、次の手順に進んでトラブルシューティングを行います。
- OSSの静的Webサイトホスティング機能が設定されている場合、実際の状況に基づいて次のいずれかのソリューションを選択できます。
- Alibaba Cloud Content Delivery Network側で、ルートドメイン名URLを、ルートドメイン名URLを指すファイルに書き換えます。 たとえば、Alibaba Cloud Content Delivery Network高速化ドメイン名
www.example.com
をwww.example.com/index.html
に書き換えます。 書き換えルールの詳細については、「書き換えの設定」をご参照ください。
適用範囲
- CDN
- OSS