2014-02-10 56 views
2

我在我的nginx服務器上配置了Passenger來爲來自特定域的Rails應用提供服務。乘客不適用於服務器塊內的位置塊

我需要在我的應用程序上的某個路徑(/works)在60秒後不超時,因爲上傳文件需要一段時間,我懷疑超時過早。我想用proxy_connect_timeout來解決這個問題。

我試圖用特定於該路徑的位置的塊,以增加超時,但它會導致對/works每個請求(或任何子路徑),以導致404

server { 
    listen 80; 
    server_name myserver.com; 
    root /path/to/my/app/public; 
    passenger_enabled on; 

    location /works { 
     proxy_connect_timeout 300s; 
    } 
} 

這是條目在error.log

2014年2月10日4點30分31秒[錯誤] 9579#0:* 4 「/path/to/my/app/public/works/index.html」 未找到(2:沒有這樣的文件或目錄),客戶端:0.0.0.0,服務器:myserver.com,請求:「GET/works/HTTP/1.1」,主機:「myserver.com」

從我能從該條目中收集到的信息看來,它似乎將公衆視爲不知道它應該將請求傳遞給Rails。我也試圖從該位置塊啓用乘客,但沒有運氣。


我如何得到這個工作?是否還有一種方法可以使位置塊僅在/works上執行,而不是在任何子路徑上執行(例如/works/1)?

回答

1

您必須在每個位置塊中重新指定passenger_enabled

Phusion Passenger users guide:

當使用location塊,你必須要啓用的Phusion客運每個location塊重新指定passenger_enabled。這是因爲每個location區塊默認關閉passenger_enabled

+0

謝謝,我會再試一次。我以爲我已經嘗試過了,並沒有工作,但也許我做了錯誤的事情。 –

+0

謝謝,這工作。 –