2016-10-03 105 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

相关问题