Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

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

Hideyasu
Hello World?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away