Nginx的网关(502)错误的Django 500错误(而不是显示Django的500页)与DEBUG = False设置

我有我的当前设置的问题…而问题是,如果我在Django的settings.py文件中设置DEBUG = False nginx停止显示500错误的django回溯,但不显示我们的500页。 它只显示nginx 502错误的网关错误。

我确实收到跟踪回复的电子邮件错误,就像我configuration它将回溯邮件发送给我一样。 但我想显示不错的500页给用户不Nginx的502网关错误…

老实说,我甚至不知道从哪里开始寻找问题的根源。 我准备发布所有必要的configuration文件,如果有些nginx专家会来告诉我他想看什么。

艾伦

编辑1:我查了什么日志文件显示在500错误之一,它显示了这一点:

[pid: 16203|app: 0|req: 1/1] my.ip.address () {46 vars in 915 bytes} [Thu Sep 12 10:01:17 2013] GET /settings/personal/ => generated 0 bytes in 1249 msecs (HTTP/1.1 500) 0 headers in 0 bytes (0 switches on core 0) 

这是否意味着它以某种方式django错误导致它看起来像Django返回0字节?

这是否意味着它以某种方式django错误导致它看起来像Django返回0字节?

是的,这里没有nginx问题,问题是Django没有返回500错误页面。

使用这里logging的nginx的error_page指令

由于Nginx会从后端拦截5XX错误,并向最终用户显示任何你喜欢的页面。

我最近有同样的问题。 我做了什么来解决这个问题是添加到uwsgi启动参数这些:-catch-exceptions和-error-route-status =“500 file:filename = / usr / local / nginx / html / index.html,status = 500 Internal服务器错误”

一个是从django中捕获exception,即使DEBUG = false也是如此。 另一个redirect请求到一个特定的文件,所以客户端避免看到一个页面充满djangoexception,而是看到一个“我们抱歉等等等等”的消息。 请记住,我使用的uwsgi版本是1.9.15。