2026年5月17日
2026年5月17日
Nginxの502 Bad Gatewayを解決する方法
ステップ1: Nginxのログファイルを確認する
Nginxで502 Bad Gatewayエラーが発生した場合、まず最初に実行したいステップはログファイルを確認することです。通常、このエラーメッセージはNginxサーバーが接続要求を正しく処理できなかったことを示しています。
# Nginxのアクセスログとエラー日誌を表示
sudo tail -n 100 /var/log/nginx/error.log
# エラーログを確認し、具体的なエラー内容を理解する
ステップ2: PHP-FPMとの接続問題を調査する
Nginxが502 Bad Gatewayエラーを返す主な原因の一つはPHP-FPM(FastCGI Process Manager)とNginxの間での通信障害です。まず最初に、PHP-FPMとNginxの接続性を確認します。
# PHP-FPMの状態をチェック
sudo systemctl status php7.4-fpm # 使用中のPHPバージョンに合わせて変更
# NginxとPHP-FPMの接続設定を確認
sudo nano /etc/nginx/sites-available/your-site.conf
# location快でfastcgi_passが正しく設定されているか確認
ステップ3: 実装例:NginxとPHP-FPMの接続設定
以下の例では、NginxとPHP-FPMの間での通信を確立するための基本的な設定方法を示します。
# Nginxの配置ファイルを開く
sudo nano /etc/nginx/sites-available/your-site.conf
# location快でfastcgi_passの設定を確認
location / {
try_files $uri $uri/ =404;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 使用中のPHPバージョンに合わせて変更
}
ステップ4: プロセス管理とリソース制限
Nginxが502 Bad Gatewayエラーを返す場合、PHP-FPMのプロセス数やメモリ制限が問題である可能性があります。適切なリソース制限とプロセス管理を行うことで、この問題を解決することができるでしょう。
# PHP-FPMの設定ファイルを開く
sudo nano /etc/php/7.4/fpm/pool.d/www.conf
# max_childrenの値を調整
pm = dynamic
pm.max_children = 50 # 必要に応じて調整
# タイムアウトを延長
request_terminate_timeout = 30s
ステップ5: NginxとPHP-FPMを再起動する
設定が完了したら、NginxとPHP-FPMを再起動することで変更内容を適用します。
# PHP-FPMを再起動
sudo systemctl restart php7.4-fpm # 使用中のPHPバージョンに合わせて変更
# Nginxを再起動
sudo systemctl restart nginx
注意事項
- セキュリティ上の注意: セキュリティパッチや最新のソフトウェアバージョンを使用することを忘れないでください。
- パフォーマンス/運用上の注意: リソース制限が適切かどうかは、サーバーの負荷状況によって異なるため、定期的な監視が必要です。
まとめ
1. ログファイルの確認: Nginxのエラーログから具体的な問題を特定します。
2. PHP-FPMとの接続設定: location快でfastcgi_passが正しく設定されているか確認します。
3. プロセス管理とリソース制限: PHP-FPMの最大プロセス数やタイムアウトを適切に設定します。
4. 再起動: 設定変更後、NginxとPHP-FPMを再起動します。
関連記事: