LoginSignup
7
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-09-28

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

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の通信であることを追加している?

7
5
1

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