我是Rails和Nginx的新手。我被要求在我们的应用程序中添加自定义错误页面。我在这个网站上找到了这样做的说明,我的自定义错误页面在本地渲染得很好。当我转到网址/no_such_page
时,我会看到相应的页面。当我将代码部署到运行nginx的测试服务器并尝试相同的url时,我会看到以下内容:
500内部服务器错误 如果您是本网站的管理员,请阅读此Web应用程序的日志文件和/或Web服务器的日志文件,以了解出现了什么问题。
在nginx服务器上,如果我转到网址\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配置中是否需要做一些特殊工作才能使其正常工作?
答案 0 :(得分:2)
500内部服务器错误如果您是本网站的管理员,请阅读此Web应用程序的日志文件和/或Web服务器的日志文件,以了解出现了什么问题。
此错误消息来自Rails本身,而不是来自Nginx。
这意味着您的自定义错误页面本身会引发异常,这会导致无限循环错误 - >显示错误页面 - &gt;错误 - >显示错误页面 - &gt; ... Rails检测到此并停止显示您看到的错误消息。检查日志中的字符串以查看错误:
Error during failsafe response: