デフォルトでは、CDN が送信するオリジンリクエストの Host ヘッダーは高速化ドメイン名です。この機能を使用すると、これらのリクエストの Host ヘッダーの値をカスタマイズできます。
デフォルトの back-to-origin ホストについて
複数の高速化ドメイン名から異なる静的リソースを提供する場合、一般的にはドメインごとに個別のオリジンサーバーをセットアップします。
しかし、特にオリジントラフィックが少ない高速化ドメイン名の場合、複数のサーバーを維持するのは非効率です。この問題は、仮想ホストを使用することで解決できます。
仮想ホスト
仮想ホストを使用すると、単一の Web サーバーで複数の Web サイトをホストできます。サーバーは、異なるドメイン名またはホスト名を使用して Web サイトを区別・分離します。ユーザーが特定のドメイン名またはホスト名をリクエストすると、サーバーはそのリクエストを一致する仮想サイトにルーティングし、対応するコンテンツを返します。
Nginx での実装
Nginx は server ブロックを使用して複数の仮想サイトを設定します。以下に基本的な設定例を示します。
server {
listen 80;
server_name example.org www.example.org;
...
}
server {
listen 80;
server_name example.net www.example.net;
...
}
server {
listen 80;
server_name example.com www.example.com;
...
}この設定では、example.org、example.net、example.com の 3 つの仮想サイトが定義されています。Nginx は Host ヘッダーと server_name を照合して、正しい仮想サイトを選択します。一致するものが見つからない場合、Nginx はデフォルトの仮想サイトからコンテンツを提供します。デフォルトサイトが明示的に設定されていない場合、最初の server ブロックがデフォルトになります。
デフォルトの back-to-origin ホスト
URL にアクセスすると、リクエストの Host ヘッダーはデフォルトでその URL のホストとポートになります。CDN はこのデフォルトを上書きし、Host ヘッダーを高速化ドメイン名に設定します。このデフォルト値は、オリジンサーバーの仮想ホスト設定に基づいてカスタマイズできます。
この機能が正しく動作するためには、オリジンサーバーが Host ヘッダーを使用してリクエストを異なる仮想サイトにルーティングするように設定されている必要があります。そうでない場合、この機能は正しく動作しません。
オリジンサーバーが HTTPS プロトコルを使用する場合、デフォルトの back-to-origin ホストの設定に加えて、通常は デフォルト back-to-origin SNI も設定する必要があります。back-to-origin ホストとオリジン SNI の設定に一貫性がない場合 (例えば、HOST をオリジンドメイン名に設定し、SNI を高速化ドメイン名に設定するなど)、SSL ハンドシェイクの失敗やオリジンサーバーのエラーが発生する可能性があります。back-to-origin ホストとオリジン SNI の両方を同じドメイン名 (通常はオリジンサーバーの証明書と仮想ホスト設定に一致するオリジンドメイン名または高速化ドメイン名) に設定することを推奨します。コンソールでは、「デフォルトの back-to-origin ホスト」と「デフォルトのオリジン SNI」は別々の設定項目です。
操作手順
CDN コンソールにログインします。
左側のナビゲーションウィンドウで、ドメイン名 を選択します。
対象の高速化ドメインを見つけ、[操作] 列の [管理] をクリックします。
左側のナビゲーションウィンドウで、Back-to-Origin 設定を選択します。
デフォルトの配信元ホスト セクションで、変更 をクリックします。
Back-to-Origin ホスト スイッチをオンにし、ドメインタイプ を選択します。
パラメーター | 説明 |
高速化ドメイン名 | back-to-origin ホストを高速化ドメイン名に設定します。 |
オリジンドメイン | back-to-origin ホストをオリジンサーバーのドメイン名に設定します。オリジンサーバーが IP アドレスで指定されている場合、このオプションは選択不可となり利用できません。オリジンサーバーが OSS ドメインの場合、この機能は自動的に有効になり、back-to-origin ホストはオリジンドメインに設定されます。 |
カスタム | back-to-origin ホストを指定したカスタムドメインに設定します。カスタムドメイン名がオリジンサーバーにバインドされていることを確認してください。そうでない場合、オリジンリクエストは失敗します。オリジンサーバーが複数のドメイン名にバインドされており、特定のものからリソースを取得する必要がある場合にこのオプションを使用します。 |
オリジンサーバーが HTTPS プロトコルを使用する場合、同じ Back-to-Origin 設定 ページで デフォルト back-to-origin SNI も設定する必要があります。SSL ハンドシェイクの失敗やオリジンサーバーの拒否を避けるため、Back-to-Origin ホスト と デフォルト back-to-origin SNI を同じドメイン名 (通常はオリジンドメイン名) に設定することを推奨します。例えば、Back-to-Origin ホスト がオリジンドメイン名に設定されているにもかかわらず、デフォルト back-to-origin SNI が高速化ドメイン名に設定されている場合、オリジンサーバーの証明書検証が失敗する可能性があります。
[OK] をクリックします。
設定例
デフォルトでは、この機能は無効になっています。手動で有効にできます。
例 1:オリジンサーバーがドメイン名で指定されている場合
設定:
高速化ドメイン名:
image.example.comオリジンサーバーアドレス:
source.example.com
各ドメインタイプには、以下の動作があります。
高速化ドメイン名: CDN がオリジンリクエストを実行すると、オリジンサーバー
source.example.com上の仮想サイトimage.example.comからリソースを取得します。オリジンドメイン: CDN がオリジンリクエストを実行すると、
source.example.comからリソースを取得します。カスタム: back-to-origin ホストは入力したカスタムドメインになります。CDN がオリジンリクエストを実行すると、
source.example.comホスト上のカスタムドメインの仮想サイトからリソースを取得します。
例 2:オリジンサーバーが IP アドレスで指定されている場合
設定:
高速化ドメイン名:
example.comオリジンサーバーアドレス:
10.10.10.10
各ドメインタイプには、以下の動作があります。
高速化ドメイン名: CDN がオリジンリクエストを実行すると、ホスト
10.10.10.10上のexample.comの仮想サイトからリソースを取得します。オリジンドメイン: オリジンサーバーが IP アドレスであるため、このオプションは利用できません。
カスタム: CDN がオリジンリクエストを実行すると、
10.10.10.10ホスト上のカスタムドメインの仮想サイトからリソースを取得します。
例 3:オリジンサーバーが OSS ドメインの場合
設定:
高速化ドメイン名:
example.comオリジンサーバーアドレス:
example.oss-cn-hangzhou.aliyuncs.com
オリジンサーバーが OSS ドメインの場合、CDN は自動的にこの機能を有効にし、back-to-origin ホストをオリジンドメインに設定します。各ドメインタイプには、以下の動作があります。
高速化ドメイン名: CDN がオリジンリクエストを実行すると、
example.oss-cn-hangzhou.aliyuncs.comOSS ドメイン上のexample.comサイトからリソースを取得します。オリジンドメイン: CDN がオリジンリクエストを実行すると、OSS ドメイン
example.oss-cn-hangzhou.aliyuncs.comからリソースを取得します。カスタム: CDN がオリジンリクエストを実行すると、ご利用の
example.oss-cn-hangzhou.aliyuncs.comサイト上のカスタムドメインの仮想サイトからリソースを取得します。
よくある質問
デフォルトの back-to-origin ホストを設定した後、高速化ドメイン名にアクセスすると 404、500、502、または 403 エラーが発生する場合はどうすればよいですか?
以下のトラブルシューティング手順に従ってください。
back-to-origin ホストの設定がオリジンサーバーの仮想ホスト設定と一致しているか確認します。 オリジンサーバーが仮想サイトを区別するために
Hostヘッダーを使用している場合 (Nginx のserver_nameなど)、CDN コンソールで設定されたデフォルトの back-to-origin ホストが、オリジンサーバーが期待するドメイン名と一致していることを確認してください。コンソールナビゲーション: ドメイン名 > ドメイン名リスト > 対象ドメインを選択 > Back-to-Origin 設定 (サブタブ) > Back-to-Origin ホスト セクションで 変更 をクリックし、ダイアログボックスで ドメインタイプ をオリジンドメイン名または高速化ドメイン名に設定します。オリジンサーバーが CDN ノード IP をブロックしていないか確認します。 back-to-origin ホストが正しく設定されていてもエラーが続く場合は、オリジンサーバーのセキュリティポリシーが CDN ノード IP をブロックしていないか、またはオリジンサーバーのファイアウォールやセキュリティグループが CDN からのリクエストを拒否していないか確認してください。
IIS ホストヘッダーの設定を確認します。 オリジンサーバーが IIS を実行しており、特定のホストヘッダーが設定されている場合、CDN のオリジンリクエストの Host フィールドはそのホストヘッダーと一致する必要があります。そうでない場合、IIS は 403 または 404 エラーを返す可能性があります。IIS に特定のホストヘッダーが設定されていない場合 (IP 直アクセスを許可)、特別な設定は不要ですが、CDN の back-to-origin ホストと一致するように正しいホストヘッダーを設定することがベストプラクティスです。
CDN キャッシュをクリアします。 オリジンからのエラー応答 (404 など) が以前に CDN エッジノードによってキャッシュされた場合、back-to-origin ホスト設定を変更した後に CDN キャッシュをクリアして、キャッシュされたエラー応答を削除する必要があります。パージとプリフェッチ > キャッシュのクリア に移動し、クリアタイプ (URL/ディレクトリ/正規表現) を選択して、パージタスクを送信します。
デフォルトの back-to-origin ホストと SNI を設定した後、ERR_TOO_MANY_REDIRECTS または 502 エラーが発生する場合はどうすればよいですか?
ERR_TOO_MANY_REDIRECTS は通常、CDN とオリジンサーバーの両方で HTTPS 強制リダイレクトが設定されているためにリダイレクトループが発生することが原因です。502 エラーは通常、オリジンプロトコルまたはポートが誤って設定されていること (例えば、オリジンサーバーが標準ではないポートでリッスンしているなど) を示します。以下の手順に従ってください。
オリジンサーバーで HTTPS 強制リダイレクトを無効にします。 オリジンサーバーの管理パネル (宝塔パネルなど) にログインし、HTTPS 設定を見つけて、「HTTPS を強制」または「HTTP から HTTPS へのリダイレクト」オプションを無効にします。
back-to-origin ホストとオリジン SNI が正しく設定されていることを確認します。 CDN コンソールの Back-to-Origin 設定 ページで、「Back-to-Origin ホスト」と「デフォルト back-to-origin SNI」が正しいドメイン名 (通常はオリジンドメイン名) に設定されており、両方の値が一貫していることを確認してください。
オリジンプロトコルとポートを確認・調整します。 CDN のオリジンプロトコル (HTTP または HTTPS) とポートが、オリジンサーバーの実際の設定と一致していることを確認してください。オリジンサーバーが特定のポート (HTTP のポート 8080 など) でのみリッスンしている場合は、CDN のオリジンサーバー設定で対応するオリジンポートを設定してください。
CDN キャッシュをクリアします。 設定を調整した後、CDN キャッシュをクリアして、キャッシュされたリダイレクトやエラー応答を削除してください。
CDN のオリジンリクエストの Host ヘッダーが期待通りであることを確認するにはどうすればよいですか?
以下の方法を使用してください。
リクエストが CDN を経由していることを確認します。 ブラウザの開発者ツールのネットワークパネルで、高速化ドメイン名へのリクエストの Remote Address が Alibaba Cloud CDN ノード IP であることを確認し、リクエストが CDN 高速化パスを通過していることを確認します。高速化ドメイン名経由でのアクセスは、高速化状態を確認します。
オリジンサーバーのアクセスログで Host ヘッダーを確認します。 オリジンサーバーにログインし、アクセスログ (Nginx の
access.logなど) を表示します。CDN のオリジンリクエストの Host ヘッダーの値が、CDN コンソールで設定されたデフォルトの back-to-origin ホストと一致することを確認します。例えば、設定した back-to-origin ホストがsource.example.comの場合、対応するオリジンリクエストのオリジンサーバーログの Host ヘッダーの値もsource.example.comである必要があります。CDN は、クライアントの元のリクエストパスをそのまま渡すことに注意してください。コンソールで「オリジン URI の書き換え」機能が設定されていない場合、CDN はデフォルトで、プレフィックスやサフィックスを追加することなく、クライアントの元のリクエストパスを渡します。オリジンパスがオリジンサーバーの要件と一致しない場合は、Back-to-Origin 設定 ページで URI の書き換えを設定してください。
オリジンとして Cloudflare、WAF、またはその他のセキュリティサービスを使用している場合に 403 Forbidden エラーが発生する場合はどうすればよいですか?
オリジンサーバーが Cloudflare や WAF などのセキュリティサービスを使用している場合、403 Forbidden エラーは通常、back-to-origin ホストがオリジンのセキュリティサービスが期待する Host ヘッダーと一致しないために、セキュリティポリシーがリクエストをブロックすることが原因で発生します。以下の手順に従ってください。
デフォルトの back-to-origin ホストを、実際にオリジンサーバーにバインドされているドメインに設定します。 CDN コンソールで、Back-to-Origin ホスト を、実際にオリジンサーバーにバインドされているドメイン名 (高速化ドメイン名ではない) に設定し、オリジンサーバーの証明書と仮想ホスト設定と一致することを確認します。
WAF 設定でドメインの一貫性を確保します。 オリジンサーバーが WAF (Alibaba Cloud WAF や Cloudflare など) を使用している場合、CDN のオリジンリクエストの Host ヘッダーが WAF で設定された保護ドメインと一致することを確認してください。そうでない場合、WAF はドメインの不一致によりリクエストをブロックします。
オリジンサーバーのアクセスログを確認します。 オリジンサーバーまたはセキュリティサービスの管理パネルにログインし、アクセスログを確認して、CDN ノード IP からのリクエストがブロックされているかどうかを確認します。ブロック理由をチェックして、特定のセキュリティルールを特定します。
CDN キャッシュをクリアします。 設定を変更した後、CDN キャッシュをクリアして、キャッシュされた 403 エラー応答を削除してください。
CDN 高速化後にページの自動転送が失敗したり、一部のリソースにアクセスできなくなったりした場合はどうすればよいですか?
この問題は、オリジンサーバーがルーティングや自動転送ロジックに URL パラメーターや特定の Host ヘッダーに依存しており、CDN のデフォルトの動作がパラメーターの損失や Host ヘッダーの不一致を引き起こす場合に発生する可能性があります。以下の手順に従ってください。
キャッシュルールの URL パラメーター設定を確認します。 CDN コンソールのキャッシュ設定で、「URL パラメーターを無視」機能が有効になっているかどうかを確認します。オリジンサーバーが自動転送やロジック決定に URL パラメーターを使用している場合、この機能を有効にするとパラメーターが失われる可能性があります。「URL パラメーターを無視」を無効にするか、「指定されたパラメーターを保持」を選択して、オリジンサーバーが必要とするパラメーターを保持することを検討してください。
back-to-origin ホストをオリジンサーバーが期待するドメインに設定します。 Back-to-Origin ホスト を高速化ドメイン名またはオリジンサーバーが期待するドメインに設定し、オリジンサーバーがリクエストの Host ヘッダーを正しく識別し、自動転送ロジックを処理できるようにします。
ディレクトリまたは URL のパージを実行します。 設定を変更した後、CDN コンソールの更新とプリフェッチページでディレクトリのパージまたは URL のパージを実行して、新しい設定を適用します。