症状
502 Bad Gateway
nginx/1.xx.x
原因と解決方法
バックエンドサービスが起動していない
systemctl status アプリ名
docker ps
systemctl start アプリ名
nginxの設定でポートが間違っている
# 正解
location / {
proxy_pass http://localhost:3000;
}
Docker環境でのホスト名が間違っている
# 間違い
proxy_pass http://localhost:3000;
# 正解(サービス名を使う)
proxy_pass http://app:3000;
ログで確認する
tail -f /var/log/nginx/error.log
ハマったポイント
- Docker環境では
localhostではなくサービス名でアクセスする - バックエンドが起動していない場合が一番多い
バックエンドサービスが起動していない原因を調べるにはsystemdでサービスを管理する方法の systemctl status でサービスの状態を確認するのが確実だ。
関連記事
- nginxの基本的な設定ファイルの書き方
- docker-composeの基本的な使い方
- Dockerでポートが既に使用中エラーが出た時の対処法
- Linuxでログをリアルタイム監視するtail -fの使い方
おすすめのVPS
VPSを使って本番環境を構築するなら、以下のサービスがおすすめです。