サイトを開いたら「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: 誰かが「今は無理」と断っている。自分で出しているのか、限界なのかを先に分ける
- 上限を上げるときは、メモリの余裕を必ず確かめる
- どちらも、訪問者に言われる前に気づける監視を用意しておく
詳しく知りたいとき
- 原因になりやすい5か所と、再発させない設定: 502 Bad Gatewayが出るとき、どこを見るか
- 自分で出しているのか限界なのかの見分け方: 503 Service Unavailableが出るとき
この記事は生成AIで作成し、公開前に人が最終確認しています。掲載しているコマンドは、すべて公開済みの教材・記事に載っているものから引用しています。