301/302 リダイレクト機能は、オリジンサーバーからの 301 および 302 レスポンスステータスコードをサポートし、どちらも同じ方法で処理します。この機能を有効にすると、CDN の POP (Point of Presence) がオリジンサーバーからの 301/302 レスポンスを直接処理するため、データのやり取りが減り、ユーザーのリソース取得が高速化されます。
前提条件
オリジンサーバーが 301/302 リダイレクトを使用してビジネスロジックを実装していること。
背景情報
301 または 302 は、リソースが移動し、リクエストされた場所ではアクセスできなくなったことを示す HTTP ステータスコードです。これを処理するために、サーバーは通常、レスポンスに Location ヘッダーを含めます。クライアントが Location ヘッダーを含む 301/302 レスポンスを受信すると、ヘッダーで指定されたアドレスに新しいリクエストを送信してリソースを取得します。
仕組み
301/302 リダイレクトとは、CDN の POP (Point of Presence) が、オリジンへのリクエストに対するレスポンスとしてオリジンサーバーから 301/302 ステータスコードを受信した際に、ユーザーに 301/302 ステータスコードを返すのではなく、CDN POP が直接 Location アドレスに従ってリソースを取得することを意味します。
-
クライアントがファイル
http://example.com/examplefile.txtをリクエストします。 -
ファイルは CDN の POP (Point of Presence) にキャッシュされておらず、オリジンへのリクエストが送信されます。
-
オリジンサーバーは 301/302 ステータスコードを返し、Location ヘッダーは
http://www.example.org/examplefile.txtを指します。 -
CDN POP がオリジンサーバーからレスポンスを受信すると、Location アドレス
http://www.example.org/examplefile.txtにリクエストを送信してリソースを取得します。 -
CDN の POP (Point of Presence) が必要なリソースを取得した後、そのリソースは CDN POP にキャッシュされます。
-
CDN POP は取得したリソースをユーザーに返します。
この時点で、別のユーザーが http://example.com/examplefile.txt ファイルをリクエストすると、リクエストは CDN の POP (Point of Presence) 上のキャッシュに直接ヒットし、ファイルがユーザーに返されます。
注意事項
301/302 リダイレクトを設定する前に、CDN にデフォルト back-to-origin ホストまたは特定 back-to-origin ホストが設定されていることを確認してください。
-
デフォルト back-to-origin ホストまたは特定 back-to-origin ホストが設定されていない場合:オリジンサーバーが CDN POP に 301/302 ステータスコードと Location URL で応答すると、オリジンへのリクエストの Host ヘッダーは Location URL のドメイン名を使用します。
-
デフォルト back-to-origin ホストが設定されている場合:オリジンサーバーが CDN の POP (Point of Presence) に 301/302 ステータスコードと Location URL で応答すると、オリジンへのリクエストは CDN で設定された Host ヘッダーを使用します。オリジンサーバーが Location URL のドメイン名を back-to-origin ホストとして使用する必要がある場合は、特定 back-to-origin ホスト機能を使用してください。
オリジンサーバーから CDN の POP (Point of Presence) へのレスポンスに含まれる Location ヘッダーは、次の 3 つの形式をサポートしています。
-
Location: http://www.example.net/index.html:CDN の POP (Point of Presence) は、Location ヘッダーの完全な URL を使用します。 -
Location: //www.example.net/index.htmL:CDN POP は、オリジンへのリクエストのプロトコルとLocationヘッダーの情報を組み合わせて URL を形成します。 -
Location: /index.html:CDN POP は、元のオリジンへのリクエストのプロトコルとドメイン名を Location ヘッダーの値と連結して URL を形成します。
操作手順
Alibaba Cloud CDN コンソールにログインします。
左側のナビゲーションペインで [ドメイン名 ] をクリックします。
-
ドメイン名 ページで、管理するドメイン名を見つけ、操作 列の 管理 をクリックします。
-
Back-to-Origin 設定 をクリックします。[設定] タブで、Back-to-origin 301/302 同期 セクションを見つけ、スイッチをオンにします。
-
表示されたダイアログボックスでパラメーターを設定し、OK をクリックします。
パラメーター
説明
[301/302 追跡回数上限]
これは、1 回のユーザーリクエスト中に CDN の POP (Point of Presence) がリダイレクトをたどることができる最大回数です。この制限を超えると、POP は 301 または 302 ステータスコードを直接ユーザーに返します。デフォルト値は 2 で、有効範囲は 1~5 です。
説明[301/302 リダイレクトの最大回数] の設定は、オリジンへのリクエストの最大数に影響します。オリジンへのリクエストの最大数とは、1 回のユーザーリクエスト中に CDN ノードがオリジンサーバーにアクセスできる最大回数です。
計算式は次のとおりです:オリジンへのリクエストの最大数 = 301/302 リダイレクトの最大回数 + 1。デフォルトの最大値は 3 で、有効範囲は 2~6 です。
[301/302 追跡のパラメーター保持]
-
[○]:元のリクエストパラメーターは、リダイレクト先へのオリジンリクエストで保持されます。
-
[×]:元のリクエストパラメーターは、リダイレクト先へのオリジンリクエストで保持されません。
[301/302 追跡のリクエストヘッド保持]
-
[○]:元のリクエストヘッダーは、リダイレクト先へのオリジンリクエストで保持されます。
-
[×]:元のリクエストヘッダーは、リダイレクト先へのオリジンリクエストで保持されません。
-
設定例
ユースケース:オリジンサーバー上のリソースが新しい場所に移動しましたが、クライアントには元のドメイン名を介して透過的にアクセスさせたい。
設定:ドメイン名 example.com の 301/302 リダイレクトを有効にします。[301/302 リダイレクト] ダイアログボックスで、[301/302 リダイレクトの最大回数] を 2 に設定します。オリジンへのリクエストの最大数は 3 です。リダイレクトの有効範囲は 1~5、オリジンへのリクエストの有効範囲は 2~6 です。301/302 追跡のパラメーター保持 で × を選択し、301/302 追跡のリクエストヘッド保持 で × を選択し、OK をクリックします。
結果の説明:ユーザーが http://example.com/examplefile.txt ファイルをリクエストします。ファイルが CDN ノードにキャッシュされていない場合、ノードはオリジンサーバーにリソースをリクエストします。オリジンサーバーは 301/302 ステータスコードとリダイレクト URL http://www.example.org/examplefile.txt を返します。
-
CDN の POP (Point of Presence) が 301 または 302 ステータスコードを受信すると、リダイレクトアドレスにリクエストを送信します。POP は最大 2 回リダイレクトをたどることを試みます。試行が失敗した場合、POP は 301 または 302 ステータスコードをユーザーに返します。
-
CDN POP はリソースを取得し、ユーザーに返し、CDN POP にキャッシュします。
-
他のユーザーが再度ファイルをリクエストすると、CDN はキャッシュされたリソースを直接返します。