2012-03-04 89 views
12

我正在使用瘦Web服務器來服務我的Rails應用程序。通過HTTP和HTTPS使用瘦Web服務器

  • thin start啓動服務器會提供http請求。
  • 使用thin start --ssl啓動服務器服務https請求。

有沒有辦法有thin服務都httphttps請求併發?

我問的原因是因爲當我在我的控制器中使用redirect_to some_path時,它們重定向到http。由於thin正在服務https請求,因此不提供任何內容。

注意:我在Rails 3.0.7中使用Rack::SSL

+0

最簡單的選項可能是運行兩個單獨的瘦客戶端:一個接受SSL請求,一個接受明文請求。任何你不想這樣做的理由? (或者,如果thin在另一個web服務器(如Apache或Nginx)後面運行,則只需要一個精簡實例:前端服務器可以報告請求是否通過SSL進入。) – 2012-03-04 23:36:14

+0

您不能運行兩個在同一個端口上「薄」。 – 2012-03-04 23:39:23

+3

無法在同一端口上同時接受HTTP和HTTPS連接。 (這就是爲什麼默認情況下,HTTP在端口80上運行,而HTTPS在端口443上運行。) – 2012-03-04 23:40:29

回答

8

(註釋轉換成回答的請求。)

簡單的選擇可能是運行的薄兩個單獨的實例:一個接受SSL請求和一個接受明文請求。任何你不想這樣做的理由? (或者,如果在另一個Web服務器(如Apache或Nginx)後面運行瘦客戶端,則只需要瘦客戶端的一個實例:前端服務器可以報告請求是否通過SSL發送。)

您不能同時接受HTTP和同一端口上的HTTPS連接。 (這是默認約定,HTTP運行在端口80上的原因,而HTTPS運行在端口443上。)

4

您可以使用工頭(https://github.com/ddollar/foreman);

您使用2進程創建Procfile,然後使用forman start命令啓動這兩個進程。

把這個稱爲Procfile文件:

web: thin start 
ssl: thin start --ssl 

然後使用foreman start,他開始了2個過程。 這是我如何使用...希望這可以幫助你!

+2

這是如何工作的,因爲你不能在同一個端口上運行兩個瘦運行實例?即使你在另一個端口上啓動ssl實例,比如說'thin start --ssl -p 3001',你如何在你的應用程序中智能地處理從http到https的重定向? – jamesfzhang 2013-10-02 17:16:46

+1

@ JZ11 Nginx將根據協議智能地處理重定向/轉發。但我也想知道解決方法。 – 2013-10-10 04:44:00