[英]Ruby on Rails Thin and force_ssl, empty response over HTTP
我最近在CentOS 7.x上使用Thin作為Web服務器以及Comodo的SSL證書在CentOS 7.x上設置了多個Ruby on Rails服務器。
我已經在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/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
當我第一次從Internet瀏覽器通過HTTP訪問服務器時,我收到一條空響應消息(已在多個瀏覽器和多台計算機上進行了測試)。 當我直接通過https訪問它時,它可以很好地解析(並且SSL運行正常),而當我下次嘗試通過http訪問時,它可以重定向。 我不確定如何使用nginx或Apache修復此欄。
這是我讀過的其他問題:
Thin只能在一個端口上偵聽,並且每個實例只能服務SSL或非SSL請求。 當使用--ssl
啟動Thin時,它將嘗試將入站連接處理為TLS連接,並將其無法協商的那些連接(即純HTTP請求)丟棄。
您需要使用nginx(或其他反向代理)來偵聽多個端口並終止SSL,然后轉發到Thin。 否則,您將需要運行多個Thin實例,一個實例提供SSL,而另一個實例則不提供。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.