LoginSignup
5
3

More than 3 years have passed since last update.

[AWS,Rails]EC2のRailsアプリに外部から接続できない問題の解決

Posted at

問題の概要

世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで
https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce

上記記事を参考にEC2のサーバー構築をしており、unicornとnginx両方正常に起動している状態でElasticIPにアクセスしようとしても

このサイトにアクセスできません
[xx.xx.xx.xx]からの応答時間が長すぎます。

と表示される。

その他にも特徴があり

  • curlコマンドが弾かれる

$ curl http://xx.xx.xx.xx

  • nginxのログ、unicornのログにエラーは出ていない。

原因

SSL証明書を発行していないにもかかわらずHTTPS接続を要求しており、サーバー側が対応できず接続を拒否している。

原因は2つあり

  • ブラウザの問題
    どこかのタイミングでブラウザからHTTPS接続を要求し、キャッシュに残っていた(→自動的にHTTPS接続を要求する)

  • Railsの設定の問題
    Railsのproduction.rbforce_ssl = trueになっている。

解決策

  • production.rbの設定をconfig.force_ssl = falseに変更する。
config/environments/production.rb
#Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
config.force_ssl = false

この段階でcurlコマンドが通るようになる
$ curl http://xx.xx.xx.xx

  • ブラウザのキャッシュをクリアする。(chromeであれば右上のメニューボタン>その他のツール>閲覧履歴を消去)

まとめ

エラーログが吐き出されないため初学者には原因を特定しづらい問題だと思います。
他の初学者の方の助けになれば幸いです。

また上記内容は参考にさせていただいたQiita記事[世界一丁寧な〜]のコメント欄にて@napojin様が書き込まれた解決法をまとめたものです。私が検索したかぎりでは一つの記事になっていなかったのでまとめさせていただきました。
この場を借りてお礼を申し上げます。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3