2012-08-07 43 views
1

我對使用Nginx和Thin來服務我的Rails 3.2應用程序有點困惑。以前我在Windows Server 2008 R2上使用Thin服務我的Rails應用程序時沒有任何問題。我會在生產服務器上啓動薄上80端口指定服務器的IP地址就像這樣:Windows for Rails應用程序的Nginx + Thin配置

rails server thin -b 10.xx.x.xxx -p 80 -e production 

現在,我想Nginx的加進來,我很困惑,我應該如何開始和薄我應該如何配置Nginx轉發到Thin。

例如,現在Nginx正在監聽80端口,我應該在另一個端口啓動本地瘦嗎?像0.0.0.0:3000(或127.0.0.1:3000)?還是像我以前在10.xx.x.xxx:80上那樣開始Thin?

在我的Nginx conf文件中,我是否將上游服務器指定爲本地主機或機器的IP地址?我不確定它的用途。

upstream mywebapp_thin { 
    server 0.0.0.0:3000; 
} 

server { 
    listen  80; 
    server_name mywebserver www.mywebserver; 
    # locations et. al. excluded for brevity... 

大多數的例子,我看到有端口3000或5000,如果這些例子是真正的開發設置我想知道運行,而不是生產上游服務器?或者,由於Nginx現在正在監聽,Thin需要運行在80以外的其他端口上嗎?

我發現我的web應用程序並沒有基本的URL(MyWebServer的/項目)作出迴應,除非我加薄上(MyWebServer的:3000 /項目)運行的端口

回答

0

你是正確的,你必須開始瘦由於nginx已經在該端口上運行,所以在新端口上運行。一般來說,最好啓動服務器不是用戶應該直接回送接口上訪問,使用戶不能訪問它的一個,因此命令來啓動薄應該是這樣的:

rails server thin -b 127.0.0.1 -p 3000 -e production 

這樣做之後,你應該改變你的upstream塊是:

upstream mywebapp_thin { 
    server 127.0.0.1:3000; 
} 

也就是說,如果你沒有多個上行信,你獲得通過上游模塊一無所獲。你應該只是proxy_pass直接到你的上游。實際上,0.0.0.0不是有效的IP地址,所以這很可能是您無法訪問任何內容的原因。

我還注意到,您在server_name指令中沒有www.mywebserver.comwebserver.com,不確定是否故意遺漏了該指令。

當您提出請求時,錯誤日誌會說什麼?如果這些更改無法解決您的問題,那麼您可能需要發佈錯誤日誌以及完整的配置。

在一個側面說明,如果你在使用Windows部署,您可能會使得它可以在Java應用程序服務器上部署考慮使用JRuby和使用trinidad爲服務器而不是薄,或使用warbler來包裝你的應用程序選擇。不過,這並不會改變你的nginx配置。

+0

在閱讀本文之前,我已經完成了它的工作。儘管現在我看到我應該將設置更改爲使用本地主機(127.0.0.1)而不是直接IP地址(10.x.x.x)。感謝您爲我清理東西! – 2012-08-09 14:11:38