ブラウザを開いたら突然「500 Server Error」「403 Forbidden」——そんな経験、一度はありますよね。Webサービスをデプロイすると、ブラウザに表示されるのはエラーばかり。エラーメッセージを見ても何が起きているのかさっぱり分からず、途方に暮れてしまうことは多いものです。
この記事では、サーバーエラーの仕組みから、代表的なエラー番号の意味・原因・対処法までを、初心者の方にも分かりやすく、網羅的に解説します。エラーに出会ったときに「あ、これはこういうことか」とすぐに理解できるようになることを目指しています。
そもそも「サーバーエラー」って何?
Webサイトを閲覧するとき、あなたのブラウザ(クライアント)とWebサーバーは常に会話をしています。ブラウザが「このページを見せてください」とリクエストを送ると、サーバーが「わかりました、どうぞ」と返すのが正常な流れです。
この「返事」のことを HTTPレスポンス といい、その返事の「種類」を示すのが ステータスコード(HTTPステータスコード) という3桁の数字です。
たとえばページが正常に表示されたとき、裏では「200 OK」というコードがやり取りされています。エラーページが出るとき、このコードがエラーを示す番号になっています。
ステータスコードの「分類」を知ろう
HTTPステータスコードは、先頭の数字によって大きく5つのグループに分類されます。
| 分類 | 番号帯 | 意味 |
|---|---|---|
| 1xx | 100〜199 | 情報(処理継続中) |
| 2xx | 200〜299 | 成功 |
| 3xx | 300〜399 | リダイレクト(転送) |
| 4xx | 400〜499 | クライアントエラー(利用者側の問題) |
| 5xx | 500〜599 | サーバーエラー(サーバー側の問題) |
一般的に「サーバーエラー」と呼ばれるのは 4xxと5xxのエラーです。ただし厳密には、4xxは「リクエストした側(ユーザー・ブラウザ)に問題がある」エラー、5xxは「サーバー側に問題がある」エラーです。
4xxエラー:クライアント(ユーザー側)のエラー
4xxエラーは、リクエストそのものに問題があるケースです。「URLが間違っている」「アクセス権限がない」「認証が必要」などが典型例です。
400 Bad Request(リクエストが不正)
意味: サーバーがリクエストを理解できなかった。
リクエストの構文(書き方)が壊れていたり、不正なデータが含まれているときに発生します。ユーザーが直接遭遇するケースは少ないですが、フォームへの入力内容が不正だったときや、URLに使えない文字が含まれているときに出ることがあります。
よくある原因:
- URLに特殊文字や不正な文字が含まれている
- フォームの送信データが不完全・不正
- キャッシュやCookieの破損
対処法: ページをリロードする、ブラウザのキャッシュとCookieを削除する、URLを確認して正しいアドレスを入力し直す。
401 Unauthorized(認証が必要)
意味: このページを見るには、ログイン(認証)が必要です。
名前は「Unauthorized(未認可)」ですが、実態は「認証(Authentication)されていない」状態を示します。パスワードなしでは見られないページにアクセスしようとしたときに出ます。
よくある原因:
- ログインしていない状態で会員専用ページにアクセス
- パスワードや認証トークンが間違っている
- セッションが期限切れになっている
対処法: ログインし直す。認証情報(IDやパスワード)が正しいか確認する。
403 Forbidden(アクセス禁止)
意味: 認証に関係なく、このリソースへのアクセスは禁止されています。
401との違いは、「ログインしても見られない」点です。サーバーがリクエストを理解した上で、「あなたには見る権限がありません」と拒否しています。
よくある原因:
- ファイルやフォルダのアクセス権限(パーミッション)の設定ミス
- IPアドレスによるアクセス制限
- 管理者のみアクセス可能なページへの一般ユーザーからのアクセス
.htaccessファイルによるアクセス制限
対処法(ユーザーの場合): アクセス権限がないページなので、基本的にはどうすることもできません。必要であればサイト管理者に問い合わせる。
対処法(運営・開発者の場合): ファイルパーミッションを確認する(Linuxなら chmod コマンドで確認・修正)。
404 Not Found(ページが見つからない)
意味: 指定されたURLにコンテンツが存在しない。
最もよく見かけるエラーです。URLが間違っているか、ページが削除・移動されたときに表示されます。「存在しないページへのアクセス」は非常に多いため、多くのサイトがカスタムの404ページを用意しています。
よくある原因:
- URLの入力ミス(タイプミス)
- ページが削除・移動された
- リンク切れ(古いリンクをクリックした)
- 大文字・小文字の違い(URLは大文字小文字を区別する場合がある)
対処法: URLを確認・修正する。サイトのトップページから目的のページを探す。検索エンジンで改めて検索してみる。
405 Method Not Allowed(メソッド不許可)
意味: リクエストで使われたHTTPメソッド(GET/POSTなど)が、そのURLでは許可されていない。
Webの通信には「GET(データを取得する)」「POST(データを送信する)」など複数の方法(メソッド)があります。たとえばPOSTしか受け付けないエンドポイントにGETでアクセスすると、このエラーが発生します。
よくある原因:
- APIのエンドポイントに対して間違ったメソッドでアクセスしている
- フォームの設定ミス
対処法: 正しいHTTPメソッドを使用する(主に開発者向けの対処)。
408 Request Timeout(リクエストタイムアウト)
意味: サーバーがリクエストの受信を待っている間にタイムアウトした。
サーバーが一定時間待ってもクライアントからの送信が完了しなかった場合に発生します。
よくある原因:
- ネットワーク接続が不安定
- 大きなファイルのアップロード中に接続が切れた
対処法: ネットワーク接続を確認し、再度リクエストを送信する。
409 Conflict(競合)
意味: リクエストの内容が、サーバー上の現在の状態と矛盾している。
たとえばすでに存在するリソースを「新規作成」しようとしたとき、または複数のユーザーが同じデータを同時に更新しようとしたときに発生します。
よくある原因:
- 同じIDやユーザー名で重複登録しようとした
- 同じファイルを複数人が同時に編集した
410 Gone(消滅)
意味: リソースは以前存在していたが、今は永久に削除されており、今後も復活しない。
404と似ていますが、410は「かつて存在したが意図的に削除された」ことを明示するコードです。検索エンジンに対して「このURLはもう使われていない」と伝える効果があります。
413 Payload Too Large(ペイロードが大きすぎる)
意味: 送信しようとしたデータがサーバーの許容サイズを超えている。
ファイルのアップロード時によく発生します。
よくある原因:
- 大きすぎる画像・動画・ファイルをアップロードしようとした
- サーバーの
upload_max_filesize設定が小さい
対処法(ユーザー): ファイルサイズを圧縮・縮小してから再アップロードする。
414 URI Too Long(URIが長すぎる)
意味: リクエストのURLが長すぎてサーバーが処理できない。
GETパラメータに大量のデータを含めようとしたときなどに発生します。
422 Unprocessable Entity(処理不可能なエンティティ)
意味: リクエストの形式は正しいが、内容が意味的に処理できない。
400が「構文エラー」なのに対し、422は「構文は正しいが内容がおかしい」状況です。バリデーション(入力値の検証)エラーとして使われることが多く、WebAPIで頻繁に見かけます。
よくある原因:
- フォームに必須項目が入力されていない
- 日付の形式が正しくない
- 数値の範囲外の値が入力された
429 Too Many Requests(リクエストが多すぎる)
意味: 一定時間内に送ったリクエスト数が多すぎる(レート制限に引っかかった)。
APIのレート制限や、DDoS攻撃への防御として実装されることが多いコードです。
よくある原因:
- 短時間に大量のAPIリクエストを送信した
- ボットやスクレイピングツールが高頻度でアクセスした
- ログインの試行を繰り返した(ブルートフォース対策)
対処法: しばらく時間をおいてから再試行する。
5xxエラー:サーバー側のエラー
5xxエラーは、サーバー自体に問題が発生しているときのエラーです。ユーザー側では基本的に対処できず、サイト運営者・開発者が修正を行う必要があります。
500 Internal Server Error(サーバー内部エラー)
意味: サーバー内部で予期しないエラーが発生した。
最もよく見かける5xxエラーです。「何か問題が起きたけど、具体的に何かはわからない」というときのキャッチオール的なエラーコードです。ユーザーが突然このページに遭遇したら、まずサイト側の問題を疑ってください。
よくある原因:
- PHPやPythonなどのサーバーサイドスクリプトにバグがある
- データベースへの接続エラー
- 設定ファイル(
wp-config.phpなど)の記述ミス .htaccessファイルの書き方が間違っている- サーバーのメモリ不足
- プラグインやテーマの競合(WordPressなど)
ユーザーとしての対処法:
- ページをリロードしてみる(一時的な問題なら解決することも)
- 少し時間をおいてから再度アクセスする
- サイト運営者に報告する
開発者・管理者としての対処法:
- サーバーのエラーログを確認する(
/var/log/apache2/error.logなど) - 最近変更したコード・プラグイン・設定ファイルを元に戻す
- PHPエラーの表示を一時的に有効にして原因を特定する
501 Not Implemented(未実装)
意味: サーバーが、リクエストで使われたHTTPメソッドに対応していない。
405(Method Not Allowed)と似ていますが、505はサーバーがそのメソッド自体を認識・実装していない場合を指します。一般ユーザーが遭遇することはまれです。
502 Bad Gateway(不正なゲートウェイ)
意味: ゲートウェイ(中継サーバー)が、上位のサーバーから無効なレスポンスを受け取った。
「ゲートウェイ」とは、リバースプロキシやロードバランサーなど、ユーザーとサーバーの間に入る中継役のことです。このエラーは、中継役の先にあるバックエンドサーバーに問題があるときに発生します。
よくある原因:
- バックエンドサーバーがクラッシュ・停止している
- アプリケーションサーバー(Node.js、Pythonなど)が落ちている
- サーバー間の通信タイムアウト
- サーバーに急激な高負荷がかかっている
対処法(ユーザー): しばらく待ってから再度アクセスする。多くの場合、サーバー側の一時的な問題です。
503 Service Unavailable(サービス利用不可)
意味: サーバーが一時的に利用できない状態にある。
メンテナンス中や、サーバーに過負荷がかかっているときに表示されます。502と似ていますが、503はサーバーが意図的に「今は対応できない」と応答している点が違います。
よくある原因:
- 定期メンテナンス中
- サーバーへのアクセスが集中してキャパシティを超えた(トラフィックスパイク)
- サーバーリソース(CPU・メモリ)の枯渇
- DDoS攻撃を受けている
対処法(ユーザー): しばらく待ってからアクセスし直す。人気コンテンツのリリース直後などはアクセス集中が原因のことが多く、時間が経てば解消されることがほとんどです。
504 Gateway Timeout(ゲートウェイタイムアウト)
意味: ゲートウェイが、上位サーバーからのレスポンスを待っていたがタイムアウトした。
502は「無効なレスポンスを受け取った」のに対し、504は「何も返ってこなかった」状態です。バックエンドの処理が重すぎて時間内に完了しなかった場合によく起こります。
よくある原因:
- データベースのクエリが重く、処理に時間がかかりすぎている
- 外部APIへのリクエストがタイムアウトしている
- バックエンドサーバーのCPU・メモリが逼迫している
- ネットワーク障害
対処法(ユーザー): リロードしてみる。解決しない場合はしばらく時間をおく。
505 HTTP Version Not Supported(HTTPバージョン非対応)
意味: リクエストで使われたHTTPのバージョンに、サーバーが対応していない。
HTTP/1.1、HTTP/2、HTTP/3などのバージョン違いによる問題ですが、一般ユーザーが遭遇することはほぼありません。
507 Insufficient Storage(容量不足)
意味: リクエストを完了させるのに必要なストレージが、サーバーに残っていない。
ファイルのアップロードやデータの書き込みを行おうとした際、サーバーのディスクが満杯だと発生します。
508 Loop Detected(ループ検出)
意味: サーバーがリクエストを処理中に無限ループを検出した。
WebDAVなどのプロトコルで使われるコードで、一般的なWebサイト閲覧では遭遇しません。
511 Network Authentication Required(ネットワーク認証が必要)
意味: ネットワークへのアクセスに認証が必要である。
ホテルやカフェなどのWi-Fi(キャプティブポータル)にアクセスしたとき、ログインが必要な場合に返されることがあります。
特別に知っておきたいエラーとその見分け方
502と503と504の違い、正確に言える?
この3つは混乱しやすいですが、整理するとこうです。
| コード | 発生タイミング | イメージ |
|---|---|---|
| 502 | 不正(壊れた)レスポンスが返ってきた | 「返事が届いたが意味不明だった」 |
| 503 | サーバーがそもそも応答できない状態 | 「今は対応できませんと断られた」 |
| 504 | レスポンスが返ってくる前にタイムアウト | 「返事を待ち続けたが、来なかった」 |
いずれも「バックエンドに問題あり」という共通点があります。ユーザーとしては「サイト側の問題」と判断し、時間をおいて再アクセスするのが正解です。
404と410の使い分け
開発者・運営者視点での話ですが、ページを削除するときは 410(Gone) を返すほうがSEO的に有利です。404は「あるかもしれないし、ないかもしれない」という意味合いですが、410は「完全に消えた」と検索エンジンに伝えるため、インデックス削除が早く進みます。
ユーザーが覚えておくべき対処法まとめ
エラーに出会ったとき、ユーザーとしてできることには限界があります。しかし以下の手順を試すだけで、多くの一時的な問題は解決できます。
ステップ1:まずリロードする
F5キーまたはCtrl+R(Mac:Cmd+R)でページを再読み込みする。一時的な通信エラーや軽い問題はこれで解決することが多いです。
ステップ2:URLを確認する
特に404エラーの場合、URLのタイプミスが原因であることがよくあります。アドレスバーをよく確認しましょう。
ステップ3:キャッシュとCookieを削除する
ブラウザに溜まったキャッシュや古いCookieが原因でエラーが出ることがあります。ブラウザの設定から「閲覧データの削除」を行いましょう。
ステップ4:別のブラウザや端末で試す
特定のブラウザの設定・拡張機能が原因のこともあります。Chrome、Firefox、Safariなど別のブラウザで試してみてください。
ステップ5:インターネット接続を確認する
回線やルーターの問題で、全てのサイトがエラーになっているケースもあります。他のサイトが見られるか確認しましょう。
ステップ6:時間をおいて再アクセスする
5xxエラーはサーバー側の問題です。メンテナンス中や一時的な過負荷であれば、数分〜数時間後には回復していることがほとんどです。
開発者・運営者が知っておくべき基本
エラーを受け取る「ユーザー」の立場と異なり、サイトを運営・開発する側には積極的な対処が求められます。
エラーログの確認を習慣にする
サーバーには必ずエラーログが記録されます。Apacheなら /var/log/apache2/error.log、Nginxなら /var/log/nginx/error.log がデフォルトです。エラーが出たらまずここを確認することが鉄則です。
カスタムエラーページを用意する
デフォルトのエラーページは殺風景で、ユーザーを不安にさせます。404や500などに対してカスタムページを用意し、「トップページへ戻る」ボタンや問い合わせ先を載せることで、ユーザー体験を大きく改善できます。
監視・アラートを設定する
本番環境では、5xxエラーの発生をリアルタイムで通知する仕組みを作ることが重要です。UptimeRobot(無料プランあり)やDatadog、Mackerelなどの監視ツールを活用しましょう。
まとめ:エラーコードは「言葉」である
HTTPエラーコードは難しく見えますが、実はサーバーとブラウザが交わす共通言語です。それぞれのコードが「何が起きているか」「誰の問題か」を正確に教えてくれています。
| エラー帯 | 誰の問題? | 代表例 |
|---|---|---|
| 4xx | クライアント(ユーザー・リクエスト側) | 404, 403, 401 |
| 5xx | サーバー(サイト・インフラ側) | 500, 502, 503, 504 |
この分類を覚えておくだけで、エラーに出会ったときに「自分の操作が問題か、サイト側の問題か」をすぐに判断できるようになります。
今後エラーページに遭遇しても、「このコードは何を意味しているのか」を思い出してみてください。意味が分かれば、パニックにならずに冷静に対処できるはずです。



















