Edited at

httpsでdeviseを使ってログイン機能を実装した話

More than 1 year has passed since last update.

自分用のメモなので見づらくて申し訳ないです...


httpsでdeviseを使ってログイン機能を実装した話

railsでdeviseを使ってログイン機能を実装して本番環境にあげたら

真っ白いページが出てプロダクトが動きませんでした。

原因は本番環境はhttp(80番ポート)が閉じられていてhttps(443番ポート)しか

空いていませんでした。

なのでrailsがリダイレクトなどの処理を行うときにhttpでリダイレクトをしようとして

うまく動かなくなっていたみたいです。

なのでrailsとnginxにhttpsでリダイレクトをするという設定を追加しました。

config/enviroments/development.rb

または

config/enviroments/production.rb

の末尾に



config.force_ssl = true



を追加してrails自体の通信を強制的にhttpsで通信するように変えます。

ただ、このままではhttpとhttpsで何度もリダイレクトを起こしてしまうので

nginxの設定ファイルに



proxy_set_header X-FORWARDED_PROTO https;



を追加します。

これでnginxを再起動すれば動くはず!

解決するのに3日間もかかってしまったのは内緒

rails初心者なので補足などがあれば教えていただきたいです...


設定の詳細

config.force_ssl = true

rubyonrailsのconfig.force_ssl = trueの時の挙動

HTTP Strict Transport Security

1. httpのリクエストをhttpsにリダイレクトする

2. セキュアなクッキーを通知する

3. HTTP Strict Transport Security (HSTS):ブラウザにhttpsでしか通信できないと通知する



proxy_set_header X-FORWARDED_PROTO https;



proxy_set_header

要求されたヘッダーにhttpsの通信であることを追加している?