0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

502と503は何が違うのか——どこで止まったかをエラー番号から読む

0
Last updated at Posted at 2026-10-29

サイトを開いたら「502 Bad Gateway」や「503 Service Unavailable」が出た。どちらも「つながらない」ように見えますが、この2つは止まっている場所がまったく違います。番号を読み分けるだけで、最初に見る場所が決まります。

この記事では、VPS などで nginx の後ろにアプリ(PHP・Node.js・Python など)を置いた、よくある構成を前提に、502 と 503 の違いと確認の順番をまとめます。

まず構成を思い出す

外からの通信は、たいてい次の順に渡されます。

  • 利用者 → nginx(手前の Web サーバー)
  • nginx → アプリ
  • アプリ → データベース

502 も 503 も、手前の nginx が返していることが多い番号です。nginx が返事をできている時点で、サーバーごと落ちているわけではありません。サーバーが丸ごと止まっていれば、エラー画面すら出ないからです。

502 は「後ろに繋がらない」

502 は、nginx が後ろのアプリに渡そうとして、応答をもらえなかったという意味です。手前は動いているので、原因はほぼ後ろ側に絞れます。nginx の設定をいじり始める前に、アプリを見に行くのが近道です。

原因になりやすいのは次のあたりです。

  • アプリのプロセスが起動していない(再起動のあとに立ち上げ忘れる形がいちばん多い)
  • アプリが落ちた(メモリ不足で強制終了されたものを含む)
  • 渡し先の指定が食い違っている(ポート番号やソケットのパス)
  • アプリの起動が遅く、待ち時間を超えた
  • アプリは動いているが、データベース待ちで返事ができない

見る順番はこうです。

systemctl status nginx
ss -tlnp
tail /var/log/nginx/error.log
free -h

ss -tlnp で、アプリが本当にその番号で待ち受けているかが分かります。nginx のエラーログには、connect() failed のような形でどこへ繋ごうとして失敗したかまで残ります。ここを読めば、「設定の食い違い」なのか「相手がいない」のかが分かれます。free -h で空きが無ければ、アプリが落ちた理由はメモリの可能性が高くなります。

503 は「今は受けられない」

503 は、502 と違ってサーバー側が意図して返していることがあります。なので最初に考えるのは「誰が、なぜ出しているのか」です。

大きく2種類に分かれます。

自分で出している場合

  • メンテナンス表示にしている
  • 更新作業が途中で切れ、メンテナンス用のファイルが残ったまま
  • アクセス制限の設定で、条件に合わないものを断っている

限界に達して出ている場合

  • アプリが同時に処理できる数の上限に達している
  • データベースの接続数が上限に達している
  • 重い処理が詰まり、次のリクエストを受けられない
  • アクセスが急に増えた

見分けるには、エラーログに「上限に達した」という記録があるか、アクセスログで直前にリクエストが急増していないかを見ます。同じ接続元から同じ URL へ繰り返し来ているなら、人ではない可能性が高く、プランを上げても解決しません。

上限を上げる前に

503 の原因が上限だったとき、数字だけを上げたくなります。でも、同時に処理する数を増やせば、そのぶんメモリを使います。余裕を確かめずに上げると、503 が「メモリ不足でアプリが落ちる」という 502 側の障害に変わるだけです。

先に効くのは、1件あたりの処理を軽くすることです。同じ結果を返す部分をキャッシュする、重い処理はその場で実行せず順番待ちに回す、といった手です。

503 は「正しい止め方」でもある

作業のためにサイトを止めるとき、何も用意しないと接続を拒否する形になります。意図的に 503 を返しておけば、検索エンジンは「一時的な停止で、いずれ戻る」と受け取り、後で見に来てくれます。メンテナンス中に 404 や真っ白なページを出すと、「ページが無くなった」と受け取られかねません。

まとめ

  • 502: 手前は動いている。後ろのアプリが返事をしていない。まずプロセスと nginx のエラーログ
  • 503: 誰かが「今は無理」と断っている。自分で出しているのか、限界なのかを先に分ける
  • 上限を上げるときは、メモリの余裕を必ず確かめる
  • どちらも、訪問者に言われる前に気づける監視を用意しておく

詳しく知りたいとき


この記事は生成AIで作成し、公開前に人が最終確認しています。掲載しているコマンドは、すべて公開済みの教材・記事に載っているものから引用しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?