Webサーバーのエラーコード(HTTPステータスコード)について、よく経験するものをまとめておきます。
以下の構成を想定しています。
構成1: レンタルサーバー(ConoHa VPS)、CentOS(LAMP)、WordPress
構成2: Raspberry Pi Webサーバー(ローカルネットワーク)
背景 ~ サーバー関連のエラーのまとめ
レンタルサーバーを契約してサイトを運用しています。
また、自宅のローカルネットワークでは Raspberry Pi や Windows を使った Webサーバーを動かして、活用しています。
日常生活でネットを使っていると、よくサーバーのエラーなどを経験します。また、Web サーバーを独自で動かして技術検討をしていると、ブラウザやコンソール上でサーバーのエラーもよく経験します。
そこで、よく経験するエラーコード(HTTPステータスコード)をピックアップし、原因や対処法のパターンをまとめておくことにします。
詳細は末尾に挙げたリンク(wikipedia)に記載されています。しかし、Web サーバーを扱い始めた最初のうちは情報量が多すぎるとかえって混乱すると思います。そこで、大方のエラーはこの程度の理解で対応できるといった程度にまとめ、公開しておくことにします。
HTTP ステータスコード
HTTP ステータスコードの5つのクラス
HTTPステータスコードは、何番台かにより5つのクラスが規定されています。
100番台: ブラウザによるリクエストがあった
200番台: サーバーによりリクエストが受信された
300番台: リダイレクトがあった(リソースが置き換わった)
400番台: クライアント側のエラーが生じた
500番台: サーバー側のエラーが生じた
エラーの具体例
上記の5つのクラスの中で、エラーは400番台と500番台となっています。そこで、よく経験する具体的なコードをピックアップし、典型的な対応例をまとめておくことにします。
HTTPステータスコード | 内容 | 具体例 | 対応例 |
---|---|---|---|
403 Forbidden | クライアント側のアクセスが禁止されている/アクセス権がない | ① 参照しているファイル/CGIにユーザーのアクセス権が与えられていない ② メンテナンス等でWebサーバー側がアクセスを禁止した |
① chmod コマンドでアクセス権を設定する ② Webサーバーが稼働していることを確認する |
404 Not Found | リクエスト先のリソース/ページが存在しない | ① ブラウザに入力したURLが間違っている ② ページが削除されている ③ WordPress のパーマリンクの設定を間違えた/変更した ④ WordPressの管理画面に入れなくなった |
① (ユーザーのミス) ② 404のエラー用のページを作っておく Web サーバーのドキュメントルート(公開フォルダ)内に index.html を入れておく。 ドキュメントルートに favicon.ico を入れておく。 ③、④ WordPress、サーバーの設定を確認する |
408 Request Timeout | リクエストの待機後、時間切れになった | ① ページのデータが重すぎる ② サーバーが混雑している |
① ページのデータを削減する ② サーバーの負荷状態・グレードアップを検討する |
500 Internal Server Error | サーバー内部で何らかの問題が生じてリクエストを完了できない | ・ Web サーバーのプログラムが動作していない ・ サーバーの設定を変えた ・ サーバーのプログラムをアップグレードして正常動作しなくなった |
サーバー本体やWebサーバーアプリ(Apache)が正常に動作していることを確認する ファイルの権限を確認する |
503 Service Unavailable | サーバーが一時的に利用できない | アクセス数/負荷が上限に達した | サーバーの負荷状態・グレードアップを検討する |
※ 上記の 404 エラーは、日頃インターネットを使っていてリンク切れなどがあると、よく経験すると思います。
ブラウザ側では「Error response Error code: 404 Message File not found. … 」等の表示になると思います。この場合、Web サーバー側は機能はしているものの、要求されたページが存在しないため、404 エラーを返す、といった動きになります。
※ 500 エラーなどがあると、また、Wi-Fi 接続などネットワーク自体に問題があると、ブラウザ側では「申し訳ございません。このページに到達できません」といった表示になり、エラーコードの数値は表示されないと思います。
ブラウザ側ではサーバーからの応答が得られず、エラーコードを表示できないためです。
正常時の具体例
正常動作の場合についてもまとめておくことにします。200番程度を把握しておけば十分かと思います。
HTTPステータスコード | 内容 | 具体例 | 対応例 |
---|---|---|---|
200 OK | HTTP リクエストに対して、標準的な応答を実行した | ① URL にアクセスして正常にページ(index.html など)が表示された ② CGI が正常に実行され、正常にページが表示された。 ③ リンクが正常に機能し、ページが表示された。 |
– |
まとめ
よく経験する HTTP ステータスコードについてまとめました。
サーバーの勉強を始めた初期の頃、エラーコードと対処方法が1つに集約されたものがあったらよいのにと思っていました。そこで、よく経験するエラーコード等についてポイントをまとめ、公開しておくことにします。
レンタルサーバー(ConoHa VPS)、ワードプレス、ラズパイなど、異なる環境でサーバーを動かしてみると(エラーを経験して試行錯誤を経ると)、理解が深まるように思います。
関連リンク
・ “500 internal server error” が表示されたとき 【Linux】
・ アップグレード後に 500 エラーが出たとき 【Linux】
・ 記事リンクで「NOT FOUND 404」と表示されたとき
・ パーミッション関連でよく使うコマンド 【Linux】
・ Raspberry Pi でローカルWebサーバー 【Python 活用】
・ ファイルがあるのに “FileNotFoundError” と出るとき 【Raspberry Pi】
関連リンク [PR]
・ https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
※ エラーコードについては wikipedia がよくまとまっています。
本気で学ぶ Linux実践入門 サーバ運用のための業務レベル管理術 新品価格 |