404 状態コードを返す Azure Content Delivery Network エンドポイントのトラブルシューティング
重要
Azure CDN Standard from Microsoft (クラシック) は、2027 年 9 月 30 日に廃止されます。 サービスの中断を回避するには、2027 年 9 月 30 日までに Azure Front Door の Standard または Premium レベルに Azure CDN Standard from Microsoft (クラシック) プロファイルを移行することが重要です。 詳細については、Azure CDN Standard from Microsoft (クラシック) の廃止に関するページを参照してください。
Azure CDN from Edgio は、2025 年 1 月 15 日に廃止される予定です。 サービスが中断しないようにするには、この日までに Azure Front Door にワークロードを移行する必要があります。 詳細については、「Azure CDN from Edgio の廃止に関する FAQ」を参照してください。
この記事により、404 HTTP 応答状態コードを返す Content Delivery Network エンドポイントに関する問題のトラブルシューティングを行うことができます。
この記事についてさらにヘルプが必要な場合は、いつでも MSDN の Azure フォーラムとスタック オーバーフロー フォーラムで Azure エキスパートに問い合わせることができます。 または、Azure サポート インシデントを送信できます。 Azure サポートのサイトに移動して、 [サポートの要求] をクリックしてください。
症状
コンテンツ配信ネットワーク プロファイルとエンドポイントを作成しましたが、コンテンツがコンテンツ配信ネットワークで使用できないようです。 コンテンツ配信ネットワーク URL を使用してコンテンツにアクセスしようとすると、HTTP 404 状態コードが返されます。
原因
以下のような原因が考えられます。
- ファイルの配信元がコンテンツ配信ネットワークで認識されない。
- エンドポイントが正しく構成されていないため、コンテンツ配信ネットワークが間違った場所を参照している。
- ホストがコンテンツ配信ネットワークからのホスト ヘッダーを拒否している。
- エンドポイントがコンテンツ配信ネットワークに反映される時間がなかった。
トラブルシューティングの手順
重要
コンテンツ配信ネットワーク エンドポイントが作成されてから登録内容がコンテンツ配信ネットワークに反映されるまでに時間がかかるため、エンドポイントはすぐには利用できません。
- Azure CDN Standard from Microsoft プロファイルの場合、通常、反映は 10 分以内で完了します。
- Azure CDN Standard from Edgio プロファイルおよび Azure CDN Premium from Edgio プロファイルの場合、通常、反映は 90 分で完了します。
このドキュメントの手順を完了しても、404 応答を受け取る場合は、サポート チケットを開く前に数時間待ってからもう一度確認することを検討してください。
元のファイルを確認する
まず、キャッシュするファイルが配信元サーバーで使用できること、およびインターネットでパブリックにアクセスできることを確認します。 これを行う最も簡単な方法は、private または Incognito セッションでブラウザーを開き、ファイルを直接参照することです。 アドレス ボックスに URL を入力するか貼り付けて、それが想定どおりのファイルであることを確認します。 たとえば、HTTPS://cdndocdemo.blob.core.windows.net/publicblob/lorem.txt. からアクセスできるファイルが Azure Storage アカウントにあるとします このファイルの内容を適切に読み込むことができれば、テストは合格です。
警告
これはファイルが公開されているかどうかを確認する最も早く簡単な方法ですが、組織内の一部のネットワーク構成では、ファイルが実際にはネットワークのユーザーにのみ表示される場合でも、公開されているように表示されることがあります (Azure でホストされている場合も同様)。 そうでないことを確認するには、組織のネットワークに接続されていないモバイル デバイスや Azure の仮想マシンなど、外部のブラウザーでファイルをテストします。
配信元の設定を確認する
ファイルがインターネットで公開されていることを確認したら、配信元の設定を確認します。 Azure portal で、コンテンツ配信ネットワーク プロファイルを参照し、トラブルシューティングを行うエンドポイントを選択します。 表示された [エンドポイント] ページで、配信元を選択します。
[配信元] ページが表示されます。
配信元の種類とホスト名
[配信元の種類] と [配信元のホスト名] の値が正しいことを確認します。 この例 HTTPS://cdndocdemo.blob.core.windows.net/publicblob/lorem.txt では、URL のホスト名の部分はcdndocdemo.blob.core.windows.net であり、これが正しくなります。 Azure Storage、Web アプリ、クラウド サービスの配信元として、[配信元のホスト名] フィールドではドロップダウン リスト値が使用されているため、スペル ミスを気にする必要はありません。 ただし、カスタムの配信元を使用する場合は、ホスト名のスペルが正しいことを確認してください。
HTTP および HTTPS ポート
お使いの HTTP ポートおよび HTTPS ポートを確認してください。 ほとんどの場合、80 と 443 は正しいポートであるため、変更する必要はありません。 ただし、配信元サーバーが別のポートでリッスンしている場合は、それをここに反映する必要があります。 不明な場合は、配信元のファイルの URL を表示します。 HTTP および HTTPS の仕様では、既定値としてポート 80 と 443 が使用されます。 URL 例 HTTPS://cdndocdemo.blob.core.windows.net/publicblob/lorem.txt では、ポートは指定されていないため、既定値の 443 が想定され、正しい設定になっています。
ただし、前の手順でテストした元のファイルの URL は HTTP://www.contoso.com:8080/file.txt. であるとします ホスト名セグメントの末尾の ":8080" 部分に注意してください。 この数値は、ブラウザーに対して、ポート 8080 を使用して www.contoso.com の Web サーバーに接続することを指示します。このため、[HTTP ポート] フィールドには「8080」と入力する必要があります。 これらのポート設定が影響するのは、配信元から情報を取得するためにエンドポイントが使用するポートのみであることに注意してください。
エンドポイント設定を確認する
[エンドポイント] ページで、 [構成] ボタンを選択します。
コンテンツ配信ネットワーク エンドポイントの [構成] ページが表示されます。
プロトコル
[プロトコル] では、クライアントで使用されているプロトコルが選択されていることを確認します。 クライアントで使用されているものと同じプロトコルが配信元へのアクセス時に使用されるため、前のセクションで配信元のポートが正しく構成されていることが重要です。 コンテンツ配信ネットワーク エンドポイントは、配信元のポートに関係なく、既定の HTTP および HTTPS ポート (80 および 443) でのみリッスンします。
HTTP://www.contoso.com:8080/file.txt. を使用する仮想例に戻りましょう 前述のとおり、Contoso は HTTP ポートとして "8080" を指定しましたが、HTTPS ポートとして "44300" を指定したことも想定してみましょう。 contoso という名前のエンドポイントを作成した場合、コンテンツ配信ネットワーク エンドポイントのホスト名は contoso.azureedge.net です。 HTTP://Contoso.azureedge.net/file.txt の要求は HTTP 要求であるため、エンドポイントはポート 8080 で HTTP を使ってファイルを配信元から取得します。 HTTPS://Contoso.azureedge.net/file.txt のような HTTPS 経由のセキュリティで保護された要求の場合、エンドポイントは配信元からファイルを取得する際にポート 44300 で HTTPS を使うことになります。
配信元のホスト ヘッダー
[配信元のホスト ヘッダー] は、各要求で配信元に送られるホスト ヘッダーの値です。 ほとんどの場合、この値は前の手順で確認した [配信元のホスト名] と同じになります。 このフィールドの値が正しくなくても 404 状態は発生しませんが、配信元が予期する内容に応じて、他の 4xx 状態が発生する可能性が高くなります。
配信元のパス
最後に、 [配信元のパス] を確認する必要があります。 既定では、このパスは空白です。 このフィールドは、コンテンツ配信ネットワークで使用できるようにする配信元でホストされているリソースの範囲を限定する場合にのみ使用する必要があります。
この例のエンドポイントでは、ストレージ アカウントのすべてのリソースを使用可能にする必要があったため、 [配信元のパス] は空白のままにしました。 そのため、HTTPS://cdndocdemo.azureedge.net/publicblob/lorem.txt への要求では、エンドポイントから /publicblob/lorem.txt を要求する cdndocdemo.core.windows.net への接続が確立されることになります。 同様に、HTTPS://cdndocdemo.azureedge.net/donotcache/status.png の要求では、エンドポイントは配信元からの /donotcache/status.png を要求します。
しかしながら、配信元にコンテンツ配信ネットワークを使用しないパスがある場合は、どうすればよいのでしょうか。 たとえば、publicblob パスのみを公開したいときなどです。 [配信元のパス] フィールドに「/publicblob」と入力すると、エンドポイントによって、配信元へのすべての要求の前に /publicblob が挿入されます。 そのため、HTTPS://cdndocdemo.azureedge.net/publicblob/lorem.txt の要求はここで、URL の要求部分である "/publicblob/lorem.txt" を受け取り、先頭に "/publicblob" を付加します。 配信元に対して "/publicblob/publicblob/lorem.txt" が要求されることになります。 そのパスが実際のファイルに解決されない場合、配信元は 404 状態を返します。 この例の lorem.txt を取得するための正しい URL は、実際には HTTPS://cdndocdemo.azureedge.net/lorem.txt. になります "/publicblob" パスが一切含まれていないことに注意してください。これは、URL の要求部分が "/lorem.txt" であり、エンドポイントによって "/publicblob" が付加されることで、配信元に渡される要求が "/publicblob/lorem.txt" になるためです。