Nginx 502 Bad Gatewayエラーの修正:ステップバイステップガイド

本ガイドでは、Nginxの502エラーの一般的な原因(プロキシ設定の問題など)を詳しく解説し、迅速に診断・解決するための明確で実践的な手順を紹介します。

Nginx 502 Bad Gatewayエラーとは?

Nginxの「502 Bad Gateway」エラーは、サーバーがゲートウェイまたはプロキシとして機能している際に、上流サーバー(バックエンド)から無効な応答を受け取ったことを示します。簡単に言えば、Nginxは正常に動作していますが、背後にあるアプリケーション(PHP-FPM、Node.js、Pythonなど)がリクエストを処理できていない状態です。

一般的な原因

  1. バックエンドサービスが停止している: アプリケーションサーバーが起動していない。
  2. 設定ミス: Nginxのproxy_pass設定が間違っている。
  3. リソース不足: サーバーのメモリやCPUが枯渇している。
  4. タイムアウト: バックエンドの処理に時間がかかりすぎている。

解決のためのステップバイステップガイド

1. バックエンドサービスのステータスを確認する

まず、バックエンドサービスが実行されているか確認します。

# PHP-FPMの場合
sudo systemctl status php-fpm

# Node.js (PM2)の場合
pm2 status

サービスが停止している場合は、再起動してください。

2. Nginxのエラーログを確認する

原因を特定する最も確実な方法はログを確認することです。

# ログの末尾を確認
sudo tail -f /var/log/nginx/error.log

ログ内に「Connection refused」や「Upstream timed out」といったメッセージがないか確認してください。

3. 設定ファイルの構文チェック

設定を変更した後は、必ず構文チェックを行ってください。

sudo nginx -t

問題がなければ、Nginxをリロードします。

sudo systemctl reload nginx

まとめ

502エラーは多くの場合、バックエンドサービスのダウンや設定ミスが原因です。まずはログを確認し、サービスが正しく起動しているかを確認することから始めましょう。