簡體   English   中英

Ruby on Rails Thin和force_ssl,通過HTTP的空響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM