2016-10-03 116 views
0

我是Rails和Nginx的新手。我被要求將自定義錯誤頁面添加到我們的應用程序。我在這個網站上發現了這樣做的說明,我的自定義錯誤頁面在本地呈現得很好。當我轉到網址/no_such_page時,我看到了相應的頁面。當我將代碼部署到我們的測試服務器上運行的nginx,並嘗試相同的URL,我看到以下內容:Rails自定義錯誤頁面不會在Nginx上呈現

500內部服務器錯誤 如果您是此網站的管理員,然後請參閱此網絡應用程序的日誌文件和/或Web服務器的日誌文件以查找出了什麼wrong.`

在nginx的服務器,如果我去的URL \404,然後我看到我的網頁,所以我知道它呈現確定。 我的本地計算機和服務器都在development環境下運行。

我已經添加了這config\development.rb

config.consider_all_requests_local = false 
config.exceptions_app = self.routes 

以下是我已經添加到routes.rb

%w(404 500).each do |code| 
    get code, to: "errors#show", :code => code, :via => :all 
end 

和我errors_controller看起來是這樣的:

class ErrorsController < ApplicationController 
    def show 
     status_code = params[:code] || 500 
     render status_code.to_s 
    end 
end 

有誰知道我的nginx公司有沒有什麼特別的事情需要我去做nfig使這項工作?

回答

2

500內部服務器錯誤如果您是本網站的管理員,請閱讀此Web應用程序的日誌文件和/或Web服務器的日誌文件以找出錯誤。

此錯誤消息來自Rails本身,而不是來自Nginx。

https://github.com/rails/rails/blob/v5.0.0.1/actionpack/lib/action_dispatch/middleware/show_exceptions.rb#L15-L22

這意味着,你的自定義錯誤頁本身是拋出一個異常,這將導致無差錯的無限循環>顯示錯誤頁面級>錯誤 - >顯示錯誤頁面 - > ...的Rails檢測到這一點並停止並顯示錯誤信息。檢查你的日誌這個字符串,看看錯誤是什麼:

Error during failsafe response: 
+0

謝謝你馬特!我想我被抓住了它在本地工作而不在服務器上的事實,所以我在指責nginx。我在'var/log/nginx'中發現了我的錯誤日誌,它指向我正在忽略的東西。現在全部設置。 – zilla

相關問題