最近我在CentOS 7.x上使用Thin作爲Web服務器和Comodo的SSL證書,我已經設置了幾個Ruby on Rails服務器。Ruby on Rails瘦和force_ssl,HTTP上的空響應
我已經啓用了我的config/environments/production.rb
文件force_ssl
選項,我跑我的服務器用命令:
RAILS_ENV=production thin start -a <IP> -p 3000 --ssl --ssl-key-file <KEY FILE PATH> --ssl-cert-file <CERT FILE PATH>
我使用的設計,所以在config/initializers/devise.rb
我設置
config.rememberable_options = { secure: true }
我還在config/initializers/session_store.rb
中設置了一些配置
Rails.application.config.session_store :cookie_store, key: '_secure_<domain>_session', httponly: true, secure: true
當我第一次通過HTTP從互聯網瀏覽器訪問我的服務器時,我收到一個空的響應消息(經過多個瀏覽器和多臺計算機的測試)。當我直接通過https訪問它時,它解決了問題(SSL完美地工作),當我下次嘗試訪問http時,它重定向就好了。我不確定我可以使用nginx或Apache來修復這個問題。
下面是我讀過的其他問題:
- Rails with thin and ssl: http request not auto-redirected to https
- Ruby on rails: force_ssl not redirecting from http to https when using thin start --ssl
說得好。你應該在Nginx上做。 – emrahbasman
這是我的想法,非常感謝您的回覆。 爲了記錄,我使用iptables預路由將端口80和端口443上的連接轉發到端口3000.一旦您通過HTTPS訪問服務器一次,它就可以通過HTTP工作,但不是第一次(在給定的瀏覽器中)。 我將設置nginx。謝謝! – Mator