Rails自定义错误页面不会在Nginx上呈现
问题描述:
我是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使这项工作?
答
500内部服务器错误如果您是本网站的管理员,请阅读此Web应用程序的日志文件和/或Web服务器的日志文件以找出错误。
此错误消息来自Rails本身,而不是来自Nginx。
这意味着,你的自定义错误页本身是抛出一个异常,这将导致无差错的无限循环>显示错误页面级>错误 - >显示错误页面 - > ...的Rails检测到这一点并停止并显示错误信息。检查你的日志这个字符串,看看错误是什么:
Error during failsafe response:
谢谢你马特!我想我被抓住了它在本地工作而不在服务器上的事实,所以我在指责nginx。我在'var/log/nginx'中发现了我的错误日志,它指向我正在忽略的东西。现在全部设置。 – zilla