Erro Nginx bad gateway (502) em erros do Django 500 (em vez de mostrar a página do Django 500) com configuração DEBUG = False

Erro Nginx bad gateway (502) em erros do Django 500 (em vez de mostrar a página do Django 500) com configuração DEBUG = False

Eu tenho um problema com minha configuração atual ... E o problema é que, se eu definir DEBUG = False no arquivo django settings.py, o nginx para de mostrar rastreamentos do Django em 500 erros, mas também não mostra nossa página 500. Ele apenas exibe o erro de gateway inválido nginx 502.

Recebo o erro de e-mail com traceback, assim como o configurei para enviar tracebacks para mim, quando eles ocorrerem. Mas eu quero exibir uma boa página 500 para os usuários, não o erro de gateway nginx 502 ...

Sinceramente, nem sei por onde começar a procurar a raiz do problema. Estou preparado para postar todos os arquivos de configuração necessários, se algum especialista em nginx vier e me disser o que deseja ver.

Alan

Edit1: pesquisei o arquivo de log mostrado em um desses 500 erros e mostra isto:

[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)

Isso significa que de alguma forma é culpa do Django porque parece que o Django retornou 0 bytes?

Responder1

Isso significa que de alguma forma é culpa do Django porque parece que o Django retornou 0 bytes?

Sim, não há problema com nginx aqui, o problema é que o Django não retorna nada em vez de uma página de erro 500.

Responder2

Use a diretiva error_page do nginx documentadaaqui

Com isso, o Nginx interceptará o erro 5XX do backend e mostrará qualquer página que você desejar ao usuário final.

Responder3

Recentemente tive o mesmo problema. O que fiz para corrigir isso foi adicionar aos parâmetros de inicialização do uwsgi estes: –catch-exceptions e –error-route-status=”500 file:filename=/usr/local/nginx/html/index.html,status=500 Internal Erro de servidor"

Uma delas era capturar exceções do Django, mesmo que DEBUG=false. e o outro para redirecionar uma solicitação para um arquivo específico para que o cliente evite ver uma página cheia de exceções do Django e, em vez disso, veja uma mensagem “desculpa, blá, blá”. Tenha em mente que a versão do uwsgi que estou usando é 1.9.15.

informação relacionada