このトピックでは、症状別に CDN オリジンフェッチにおける代表的な問題とトラブルシューティング方法をまとめています。対象は、オリジンフェッチの失敗と 5xx エラー、リダイレクトループ、4xx エラー、OSS オリジンフェッチエラー、ならびにオリジンフェッチ時のコンテンツおよび動作の異常です。
症状クイックリファレンス
まず、クライアントで観察された現象に基づいてエントリポイントを特定し、対応するセクションの手順に従って項目ごとにトラブルシューティングを実施してください。
症状またはステータスコード | 一般的な原因 | トラブルシューティングエントリ |
502 Bad Gateway | オリジンプロトコルまたはポートがオリジンサーバーのリッスン設定と一致しない、オリジン SNI が欠落している、またはオリジンサーバーの証明書が無効です | |
オリジンプロトコルがプロトコル追従に設定されている場合に 502 が返される | クライアントが HTTPS でアクセスし、 CDN がそれに応じて HTTPS でオリジンフェッチを実行しますが、オリジンサーバーが HTTPS をサポートしていません | |
504 Gateway Timeout | オリジンサーバーの応答が遅い、ファイアウォールがパケットをサイレントにドロップしている、またはオリジン HTTP リクエストのタイムアウトが短すぎます | |
503 Service Temporarily Unavailable | オリジンサーバーのサービスが異常または過負荷状態、オリジンサーバーがリクエストをスロットリングしている、またはセキュリティソフトウェアがオリジンフェッチ IP アドレスをブロックしています | |
ERR_TOO_MANY_REDIRECTS | オリジンサーバーで HTTP から HTTPS への強制リダイレクトが設定されている一方、 CDN が HTTP でオリジンフェッチを実行しています | |
オリジンホストまたはオリジン SNI を設定した後にのみリダイレクトループが発生する | オリジンサーバーがターゲットサイトと一致した後、そのサイトの強制リダイレクトルールが有効になります | |
オリジンホストを設定した後に 404、403、500、または 502 が返される | オリジンホストがオリジンサーバーの仮想ホスト (server_name、 ServerName、または IIS ホスト名) と一致していません | |
403 Forbidden | CDN 側のアクセス制御ルールに該当している、またはホットリンク保護、 IP 制限、またはオリジンサーバーの WAF がオリジンフェッチリクエストをブロックしています | |
CDN 経由のアクセスでは 404 エラーが返されるが、オリジンサーバーへの直接アクセスは正常に動作する | オリジンホストが正しくない、ノードが古い 404 レスポンスをキャッシュしている、またはリクエストパスの大文字小文字やエンコーディングが異なります | |
bucket acl error | オリジンの OSS バケットがプライベートモードになっており、プライベート OSS バケットからのオリジンフェッチが有効になっていません | |
forbidden by kms error | OSS 内のオブジェクトが KMS で暗号化されており、 CDN オリジンフェッチロールに KMS 復号化権限がありません | |
forbidden to list buckets error | プライベート OSS バケットからのオリジンフェッチが OSS 静的ウェブサイトホスティングのデフォルトホームページ設定と競合しており、ルートディレクトリへのアクセスが拒否されています | |
デバイス適応が機能しなくなる (異なるデバイスが同じページを受信する) | 最初のデバイスに対する 302 リダイレクトレスポンスがキャッシュされ、同じ URL にアクセスする他のデバイスがそのキャッシュにヒットしています | |
ページリダイレクトが失敗する、または一部のリソースにアクセスできない | URL パラメータの無視により、異なるパラメータを持つリクエストが同じキャッシュを共有している、またはオリジンホストが一致していません | |
大容量ファイルのダウンロードが中断される、またはレジュームダウンロードやシーク再生が失敗する | オリジンサーバーが Range リクエストをサポートしていない、またはオリジンサーバーが Range オリジンフェッチに対して 206 以外のステータスコードで応答しています |
問題がオリジンフェッチ中に発生しているかどうかの判断
オリジンフェッチの問題は通常、高速化ドメイン名へのアクセス時に 5xx または 4xx エラーとして、または想定と異なるレスポンスとして現れます。まず次の手順で問題の切り分けを行い、その後、該当するセクションでトラブルシューティングを実施します。
リクエストが CDN を経由しているかどうかの確認:
curl -I http(s)://accelerated-domain/resource-pathを実行し、レスポンスヘッダーを確認します。レスポンスヘッダーにX-CacheやViaなどの CDN 署名フィールドが含まれている場合、リクエストは CDN ノードに到達しています。これらのフィールドがない場合は、dig accelerated-domainを実行し、名前解決結果が CDN が割り当てた CNAME レコードであるかどうかを確認します。名前解決が誤っている場合は、まず DNS 名前解決を修正し、高速化ドメイン名が CDN が提供する CNAME レコードのみに解決されるようにします。名前解決が正しいにもかかわらず CDN 署名フィールドがない場合は、DNS ハイジャックまたはローカルの hosts ファイルの設定を調査します。説明Server: AliyunOSSのレスポンスヘッダーだけでは、リクエストが OSS に直接到達したことを示す根拠にはなりません。OSS を CDN のオリジンとして使用している場合、CDN はオリジンフェッチ後にこのレスポンスヘッダーをそのまま通過させることがあります。代わりに、DNS 名前解決結果と CDN 署名フィールドを確認してください。異常がキャッシュ由来かオリジンフェッチ由来かの判別: リクエストが CDN を経由していることを確認した後、
X-Cacheを確認します。値が
HITの場合、リクエストは CDN キャッシュにヒットしています。異常なレスポンスは古いキャッシュが原因である可能性があります。まず URL リフレッシュを実行し、再度アクセスして問題が再現するかどうかを確認します。値が
MISSの場合、CDN はすでにオリジンフェッチを実行しています。それでもレスポンスが異常な場合、問題はオリジンフェッチ経路、またはオリジンサーバーのレスポンスで発生している可能性が高いです。オリジンサーバーへの直接アクセスと CDN 経由のアクセスの比較: ローカルの hosts ファイルを設定するか、オリジンサーバーの IP アドレスまたはドメイン名に直接アクセスします。オリジンサーバーへの直接アクセスは正常で、CDN 経由のアクセスのみ失敗する場合は、オリジンフェッチ設定 (オリジンプロトコル、ポート、オリジンホスト、オリジン SNI) と、オリジンサーバー側で CDN のオリジンフェッチ IP アドレスをどのように扱っているかに注目してください。オリジンサーバーへの直接アクセスも失敗する場合は、まずオリジンサーバー側の問題を解決してください。CDN 側の調整は不要です。
CDN のアクセスログとオリジンサーバーのアクセスログの比較: オリジンサーバーのログにリクエストが記録されていない場合、オリジンフェッチリクエストはオリジンサーバーに到達する前に失敗しています。DNS 名前解決、ネットワーク接続、TLS ハンドシェイク、セキュリティグループ、またはファイアウォールを確認してください。オリジンサーバーがリクエストを受信しているにもかかわらずエラーを返している場合は、両側のログにあるリクエストパス、Host、User-Agent、Referer フィールドを比較し、差異のあるフィールドを特定します。
オリジンフェッチの失敗と 5xx エラー
リダイレクトの例外
オリジンフェッチ 4xx エラー
ステータスコード別にトラブルシューティングの焦点を絞ります。
404 :リクエストはオリジンサーバーに到達しましたが、オリジンサーバーがその仮想ホストでリソースを見つけられません。オリジンフェッチリクエストパスが正しいか、CDN が古い 404 レスポンスをキャッシュしているかどうかを確認してください。
403 :オリジンサーバーがリクエストを拒否しました。Referer ベースのホットリンク防止、IP アドレスホワイトリスト、WAF ルール、および Host ヘッダーがオリジンサーバーのセキュリティポリシーと一致しているかどうかを確認してください。
OSS origin fetch errors
異常なコンテンツと動作
一般的な操作
前述のいくつかのシナリオでは、キャッシュの更新とオリジンフェッチ IP ホワイトリストのメンテナンスという 2 つの操作が共通しています。これらについて、ここでまとめて説明します。
キャッシュを更新するタイミング:
オリジンフェッチ設定 (オリジンプロトコル、オリジンポート、オリジンホスト、オリジン SNI、キャッシュルールなど) を変更した後、新しい設定は後続のオリジンフェッチリクエストに対してのみ有効になります。ノードにすでにキャッシュされている異常なレスポンス (403、404、301/302 リダイレクトなど) は自動的に期限切れになりません。そのため、設定を変更した後に更新を実行することを推奨します。そうしないと、「設定が有効になっていない」と誤って判断する可能性があります。設定が変更された後、その設定をネットワーク全体のすべてのノードに配信する必要がありますが、これには通常数分かかります。
更新方法の選択:
URL 更新:異常なリソースの正確なアドレスが分かっている場合に適しています。単一のリソースのキャッシュを正確にクリアします。
ディレクトリ更新:ディレクトリ全体のリソースが影響を受ける可能性がある場合に適しています。たとえば、オリジンホストを変更した後、サイト全体で 404 エラーが返された場合などです。
正規表現更新:パスパターンまたはファイル名拡張子によって一括で更新する必要がある場合に適しています。
サイト全体を更新するには、ドメイン名のルートディレクトリに対してディレクトリ更新を実行するか、Force パラメーターを true に設定して RefreshObjectCaches API を呼び出すことができます。各更新タイプの具体的な操作、有効時間、および 1 日あたりのクォータ制限については、「リソースのパージとプリフェッチ」をご参照ください。
オリジンフェッチ IP ホワイトリストのメンテナンス:
502、503、504 エラー、およびオリジン側の 403 エラーの複数のシナリオにおいて、根本的な原因は、オリジンサーバーが CDN オリジンフェッチ IP アドレスをブロックまたはスロットリングしていることです。オリジンフェッチ IP アドレス範囲は、ノードスケジューリングに伴って変化し、定期的に更新されます。ホワイトリストが古くなると、オリジンフェッチの失敗が再び発生します。
最新のリストを定期的に取得し、オリジンサーバーのセキュリティグループ、ファイアウォール、WAF、およびレート制限ルールに同期することを推奨します。指定されたドメイン名の L2 ノードオリジンフェッチ IP リストを取得するには、DescribeL2VipsByDomain API を使用します。オリジンサーバーがセキュリティグループまたはファイアウォールルールを通じて送信元 IP アドレスを制御している場合は、前述の API をスケジュールされたタスクに統合して、最新のオリジンフェッチ IP アドレス範囲を定期的に取得し、ホワイトリストを自動的に更新することを推奨します。