0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RailsでAWSにデプロイしたら画面が表示されない?force_ssl設定での解決策(Rails7.1以降)

Posted at

はじめに

ポートフォリオ作成のために、Railsで作成したアプリケーションをAWS上にデプロイしました。デプロイには、nginx、AWS、Pumaを使用しました。

しかし、nginxやPumaは正常に動作しているようなのに、独自ドメインでページにアクセスすると画面が表示されないというエラーが発生しました。

エラー画像

環境

  • Rails 7.1.4
  • Ruby 3.2.3

解決法

エラーの原因は、Railsのデフォルト設定であるconfig.force_ssl = trueにありました。これにより全てのアクセスがHTTPSにリダイレクトされるため、HTTPでの接続ができなくなっていました。

以下の手順で解決しました:

  1. config/environments/production.rbファイルを開き、config.force_sslの値を変更します。

    config/environments/production.rb
    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
    config.force_ssl = false
    

     

  2. ファイルを保存後、Pumaを再起動します。私はsystemdで管理しているため、以下のコマンドを使用しました。

    sudo systemctl restart puma
    

     

  3. 設定を反映させた後、ブラウザでページを開くと正常に表示されるようになりました。

補足

元々設定されていたconfig.force_ssl = trueは、アプリケーションへの全てのアクセスをSSL経由にする設定です。私の場合、AWS上でHTTPのみの設定をしていたため、画面が表示されないエラーが発生しました。

config.force_ssl = trueの記述はRails 7.1以降にデフォルトの記述として設定されました。

参考ページ:

おわりに

今回のエラーは、Rails 7.1以降にデフォルトで有効になった設定が原因で発生しました。ネットで調べても情報が少なかったため、ChatGPTを活用して原因を特定することができました。

デフォルトでSSLが有効になっているので、今後はデプロイ時に最初からSSL化を行うことが重要そうです。

ちなみに、私がRailsアプリをAWSでデプロイする際に参考にしたサイトは以下です。

Railsのデプロイに関して

AWSに関して

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?