無事にデプロイコマンド(cap production deploy)が成功したのに、ブラウザで確認すると「サイトにアクセスできない」または「ポート3000じゃないと見れない」という壁にぶつかりました。その解決策をまとめます。
- Nginxの設定重複(Conflicting server name)
【症状】 http://IPアドレス:3000 では見れるが、http://IPアドレス(ポートなし)だとエラーが出る。 EC2内で sudo systemctl status nginx を確認すると、以下の警告が出ていました。 nginx: [warn] conflicting server name "13.230.163.131" on 0.0.0.0:80, ignored
【原因】 デフォルトの /etc/nginx/nginx.conf と、自分で作成した /etc/nginx/conf.d/rails.conf の両方で、同じIPアドレスを奪い合っていたため、アプリ側の設定が無視されていました。
【解決策】 nginx.conf の中身を最小限に整理し、server { ... } ブロックを削除(またはコメントアウト)して、自作の rails.conf だけが動くようにしました。
注意点: 編集時に events { ... } ブロックまで消すとNginxが起動しなくなる(no "events" section エラー)ので、枠組みだけは残すのがポイントです。
- Chromeの「HTTPS強制」とHSTSの解除
【症状】 アドレスバーに http:// と打っても、勝手に https:// に書き換えられてしまい「接続が拒否されました」と出る。
【原因】 ブラウザ(特にChrome)が「このサイトは一度安全な接続を試みた」と記憶してしまい、非対応のHTTPSで接続し続けようとする性質(HSTS)があるためです。
【解決策】 Chromeの内部設定画面 chrome://net-internals/#hsts を開き、「Delete domain security policies」 の欄に自分のIPアドレスを入力して削除しました。
- ブラウザの「最強再読み込み」
【症状】 サーバーの設定を直したはずなのに、画面が古いまま(またはエラーのまま)変わらない。
【解決策】 通常の更新(F5)ではなく、キャッシュを完全に捨てて読み直す操作を行いました。
Chrome: デベロッパーツール(Cmd+Opt+I)を開いた状態で、更新ボタンを 右クリック > 「キャッシュの消去とハード再読み込み」。
Safari: 「設定 > 詳細」から開発メニューを有効化し、「開発 > キャッシュを空にする」(Cmd+Opt+E)。