2011-12-01 88 views
6

當前,如果在我們的服務器上啓動Rails應用程序時出現問題,用戶將進入Passenger錯誤頁面,並顯示錯誤消息,如「Ruby(Rack)應用程序無法啓動」。更改Nginx的乘客默認錯誤頁面

是否可以自定義此錯誤頁面並顯示其他內容,以便活動網站的用戶看不到此內容?

我正在使用nginx作爲服務器。

感謝

+0

您可以發佈您Nginx的配置? –

+0

@DevinM - 這是一個通用的rails應用程序配置。 – stringo0

回答

1

在測試乘客5.1中,我發現設置passenger_friendly_error_pages off不足以更改默認錯誤頁面。這將禁用公開回溯或環境變量,但仍顯示Passenger的錯誤頁面。

要解決此我必須設置如下:

passenger_intercept_errors on; 
error_page 500 /500.html; 

命令passenger_intercept_errors告訴nginx處理的400或更高的狀態代碼。 error_page命令自定義錯誤。您可能還想自定義其他錯誤。

對於Rails應用程序,頁面的位置與應用程序的public文件夾相關(您在nginx的root命令中設置的內容)。

如前所述是this comment,爲Apache類似的配置是:

PassengerErrorOverride on 
ErrorDocument 500 /path/to/500.html 
9

users guide包含各種配置選項一些有用的信息。有一個option to disable the friendly error pages這是我認爲你可能會看到的。

要禁用的啓動錯誤信息指定您的配置文件中的以下行:

passenger_friendly_error_pages off 

你可以把這個HTTP塊,服務塊或位置塊內。如果你把它放在http塊中,默認情況下會禁用該服務器上的所有虛擬主機。但是,您可以通過在http塊中放置相同的選項來覆蓋服務器塊中的設置。

+0

什麼是相反,如果我關閉'友好'的錯誤頁面?那個錯誤信息是否仍然記錄在我的服務器上?如何顯示自定義錯誤頁面(例如,twitter的失敗頁面)? – Bee

+0

蜜蜂,錯誤應該顯示在你的nginx error.log中。那麼你只需要一個標準的500頁面,你可以通過nginx進行配置。 –