任意のウェブサーバーは、HTTPリクエストを受信すると、HTTPステータスコードで応答します。これらのコードは、サーバーからの状況を説明する短いメモです。実際のサイトコンテンツは含まれていません。代わりに、HTTPリクエストを受信した後の処理結果のレポートです。多くの場合、これらのコードはさまざまなサーバー/クライアントの問題を診断するために重要です。
これらのコードは3桁の整数であり、それぞれがさまざまなステータスを表しています。最初の桁に基づいて、HTTPコードは5つのカテゴリに分類されます。
-
情報レスポンス: 値の範囲は100から199です。リクエストが受信され、処理中であることを示します。
-
成功レスポンス: 値の範囲は200から299です。アクションが正常に受信、理解、および受け入れられたことを示します。
-
リダイレクトメッセージ: 値の範囲は300から399です。リクエストを完了するには、さらなるアクションが必要であることを意味します。
-
クライアントエラーレスポンス: 値の範囲は400から499です。リクエストに誤った構文が含まれているか、リクエストを実行できないかのいずれかです。
-
サーバーエラーレスポンス: 値の範囲は500から599です。サーバーが有効なリクエストの処理に失敗したことを意味します。
このガイドでは、システム管理者の視点から、誰もが遭遇する最も一般的なHTTPエラーコード(4xxおよび5xx)のいくつかについて説明します。ウェブサーバーが特定のコードで応答する原因となる状況は数多くあります。さらに、このチュートリアルでは、潜在的な原因と解決策についても説明します。
クライアントエラー vs サーバーエラー
エラーコード400から499は、ユーザーのクライアント(ウェブブラウザまたは任意のHTTPクライアント)に起因します。エラーのほとんどはクライアントに関連していますが、ユーザーがどのコードに直面しているかを知ることは有用です。これにより、潜在的な問題がサーバー側で対処できるかどうかを判断するのに役立ちます。
一方、サーバーエラー(HTTPステータスコード500から599)は、サーバーがエラーの発生を認識しているか、リクエストを処理できない場合に発生します。
一般的なトラブルシューティング
エラーに関係なく、HTTPエラーコードに直面したときに最初に試すべき一般的なトラブルシューティングのヒントをいくつか紹介します。
-
ウェブブラウザを使用してサーバーをテストする場合、サーバーに変更を加えた後にブラウザを更新することをお勧めします。
-
サーバーログには、サーバーがリクエストをどのように処理しているかに関する詳細な情報が保持されています。たとえば、ApacheやNginxなどの一般的なウェブサーバーは、次のようなファイルを生成します。 access.log および error.log。これらのログを確認することで、有用な情報が得られます。
-
HTTPエラーコードは標準の一部です。プログラムは、リクエストの処理方法に基づいてこの標準を実装しています。つまり、サーバーソフトウェアが特定のエラーをどのように処理しているかに応じて、特定のステータスコードが返されます。
このガイドは、問題の原因を特定するための有用なガイドラインとなるはずです。
一般的なHTTPエラー
-
一般的なクライアントエラー

エラーコード400は「Bad Request(不正なリクエスト)」を示します。これは、サーバーに送信されたHTTPリクエストに無効な構文が含まれていることを表しています。不正な構文の潜在的な原因を見てみましょう:
-
サイト関連のクッキーが破損している可能性があります。ブラウザのクッキーとキャッシュをクリアすることで、問題が解決する場合があります。
-
リクエストを送信しているウェブブラウザに不具合やバグがある可能性があります。
-
手動でHTTPリクエストを作成する際のエラー(たとえば、以下の誤った使用など)による不正なリクエストである可能性もあります。 curl.

エラーコード401(Unauthorized:未認証)は、認証されていない、または正しく認証されていないリソースにリクエストがアクセスしようとしたときに発生します。問題を解決するには、ユーザーは保護されたリソースにアクセスするために必要な資格情報を提供する必要があります。
例えば、ユーザーがHTTP認証で保護されたリソースにアクセスしようとしている場合などが挙げられます。このような状況では、有効なユーザー名とパスワードが提供されない限り、ユーザーはエラー401コードを受け取ることになります。

エラーコード403(Forbidden:閲覧禁止)は、ユーザーのリクエストは有効であるものの、サーバーがリクエストの処理を拒否している状況を指します。これは、リクエストされたリソースへのアクセス権限が不足していることが原因である可能性があります。この問題を引き起こす可能性のあるいくつかのシナリオがあります:
-
ファイル権限: サーバーが要求されたファイルにアクセスするための十分な権限を持っていない場合、403エラーが発生することがあります。考えられる解決策としては、サーバーがウェブサーバーのインデックスファイルにアクセスしようとしていること、および以下が所有するワーカープロセスであることを確認することが挙げられます。 www-data ユーザーであり、インデックスファイルが正しい場所にあることを確認します(Nginxの場合は、以下になります。 /usr/share/nginx/html/index.html).
-
.htaccess : ウェブサーバーは、さまざまなセキュリティ機能を実装するために .htaccess ファイルを使用します。たとえば、特定のIPアドレスや範囲をフィルタリングします。考えられる解決策としては、HTTPリクエストの送信元IPアドレスがブロックされていないことを確認することが挙げられます。
-
ファイルが存在しない: デフォルトのインデックスファイルがなく、ディレクトリ一覧表示が有効になっていない場所にリクエストがアクセスしようとすると、サーバーは403エラーを返します。このような場合、考えられる解決策としては、ディレクトリ一覧表示を許可するようにサーバー設定を微調整することが挙げられます。

エラーコード404(Not Found)は、ユーザーがウェブサーバーへの接続には成功したものの、要求されたリソースを見つけることができなかったことを意味します。このエラーはさまざまな状況で発生する可能性があります。考えられるトラブルシューティングのアクションは以下の通りです。
-
ユーザーをサーバーリソースに誘導したリンクに、誤字脱字がないか確認します。
-
ユーザーがURLを誤って入力した可能性があります。そのようになっていないか確認し、必要に応じて修正してください。
-
サーバー上にファイルが存在することを確認します。サーバーから移動または削除されていませんか?
-
サーバーのドキュメントルートの場所が誤って設定されている可能性があります。それを確認し、必要に応じて修正してください。
-
ユーザーが所有するウェブサーバーのワーカープロセスに、要求されたファイルをトラバースする権限はありますか?ディレクトリにアクセスするには、読み取りと実行の両方の権限が必要であることに注意してください。
-
リソースはシンボリックリンクですか?その場合、サーバーはシンボリックリンクをたどるように設定されている必要があります。
-
一般的なサーバーエラー

エラーコード500(Internal Server Error)は、原因不明の理由でサーバーがリクエストを処理できない場合に発生します。状況によっては、より具体的な5xxエラーコードが適切な場合でも、サーバーがエラー500を報告することがあります。
エラー500の最も一般的な原因の1つは、サーバーの誤設定です。たとえば、不正な形式の .htaccess ファイルなどです。また、システムにPHPがインストールされていない状態でPHPコードを実行しようとするなど、必要なパッケージが不足している場合にも発生することがあります。

エラーコード502(Bad Gateway)は、サーバーがプロキシまたはゲートウェイであり、バックエンドサーバー(実際にリクエストを処理するサーバー)から有効なレスポンスを受け取れなかったことを示しています。サーバーがリバースプロキシ(ロードバランサーなど)である場合、確認すべき点がいくつかあります。
-
バックエンドサーバーが正常に動作していること。
-
リバースプロキシが適切に設定されていること(適切なバックエンド仕様が指定されていること)。
-
リバースプロキシとバックエンドサーバー間の接続が正常であること。サーバーが異なるポートを使用して通信できる場合、ファイアウォールがそれらのポートへの接続を許可している必要があります。
-
ウェブアプリがソケットを使用するように設定されている場合は、ソケットが適切な権限で正しい場所に存在することを確認してください。

エラーコード503(Service Unavailable)は、サーバーが過負荷状態にあるか、現在メンテナンス中であることを示しています。これは、いずれサーバーが利用可能になるはずであることを意味します。
サーバーがメンテナンス中でない場合、流入するリクエストを処理するために必要なハードウェアリソース(処理能力、メモリなど)が不足していることを示しています。このような場合、より多くのユーザーを許可するか、より多くのリソースを割り当てるようにサーバーを設定する必要があります。
エラーコード504(Gateway Timeout)は、サーバーがプロキシまたはゲートウェイサーバーであり、許容時間内にバックエンドからレスポンスを受信しなかったことを示しています。この問題を引き起こす可能性のある状況がいくつかあります。
-
サーバー間のネットワーク接続が不良であること。
-
バックエンドサーバーの処理が遅すぎること(パフォーマンスの問題による)。
-
ゲートウェイ/プロキシサーバーのタイムアウト制限が厳しすぎること。
最後に
このガイドでは、HTTPエラーコード、特に代表的なものについて解説します。各コードの意味を説明し、トラブルシューティングのための具体的な対処法を提案します。この知識を身につけることで、Webサーバーやアプリケーションの問題解決に向けた確かな土台を築くことができます。
これは最もよく使われるHTTPステータスコードの簡易リストにすぎません。すべてのHTTPステータスコードの包括的なリストについては、WikipediaのHTTPステータスコードを確認してください。また、以下のチュートリアルもご覧いただけます:NginxのHTTPプロキシ、ロードバランシング、バッファリング、キャッシュ:概要.
快適なコンピューティングを!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。