Alibaba Cloud CDNを使用してOSSバケットからの静的コンテンツ配信を高速化する場合、プライベートOSSバケットへのアクセスを有効にし、OSS上の静的Webサイトをホストする必要があります。 このトピックでは、このシナリオで発生する可能性のあるエラーを修正する方法について説明します。
背景情報
- 静的Webサイトホスティングの詳細については、「概要」をご参照ください。
- プライベートOSSバケットに対するAlibaba Cloud CDNアクセス権限を付与する方法の詳細については、「プライベートOSSバケットへのアクセスの設定」をご参照ください。
課題
静的webページで構成されるwebサイトはプライベートOSSバケットでホストされ、Alibaba Cloud CDNにはプライベートOSSバケットへのアクセス許可が付与されます。
ユーザーがWebサイト
https://example.com/
のホームページhttps://example.com/index.html
にアクセスしようとしますが、Alibaba Cloud CDNは403 Forbidden
エラーメッセージをユーザーに返し、「このサーバー
のURLにアクセスする権限がありません」と表示します。 ブラウザのデバッグ情報には、次の応答メッセージが表示されます。x-tengine-error: バケットの一覧表示は禁止されています
。 原因
プライベートOSSバケットへのアクセスは、OSSでホストされているWebサイトのデフォルトのホームページの設定と競合します。
説明 静的Webサイトホスティングを設定するときは、Webサイトドメイン名のデフォルトのホームページを
index.html
などの特定のファイルに設定する必要があります。 https://example.com/
などのWebサイトドメイン名への匿名リクエストは、https://example.com/index.html
などのデフォルトのホームページに自動的にリダイレクトされます。 Alibaba Cloud CDNがプライベートOSSバケットにアクセスできるようにすると、高速化ドメイン名からOSSバケットへのback-to-originリクエストは、ルートディレクトリ宛ての匿名リクエストと見なされます。 この場合、CDNはリクエストを拒否します。 エラーメッセージ「バケットの一覧表示は禁止されています」がトリガーされます。 解決策
- 解決策1: 静的Webサイトホスティング機能が不要な場合は、無効にします。 静的Webサイトホスティングを無効にするには、関連する設定をクリアします。 詳細については、「概要」をご参照ください。
- 解決策2: 静的Webサイトホスティングを有効にする必要がある場合は、URI書き換えルールを作成して、リクエストがルートディレクトリにアクセスしないようにします。
URI書き換えルールで、書き直すパス を
^/$
に、変更後のパス を/index.html
に、フラグ を [リダイレクト] に設定します。 URI書き換えルールが設定されると、Alibaba Cloud CDNはHTTP 302ステータスコードを返し、www.example.com/
www.example.com/index.html
向けのユーザーリクエストをリダイレクトします。 詳細については、「アクセスURL書き換えルールの作成」をご参照ください。