erro Nginx bad gateway (502) nos erros do django 500 (em vez de mostrar a página django 500) com DEBUG = False setting

1

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

Eu recebo o erro de e-mail com traceback, assim como configurei-o para enviar-me tracebacks, quando eles ocorrem. Mas eu quero mostrar boa página 500 para os usuários não erro de gateway nginx 502 ...

Honestamente, eu 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 ele quer ver.

alan

Editar1: procurei o arquivo de log exibido em um desses 500 erros e ele mostra isso:

[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 sua falha de alguma forma django faz parecer que o django retornou 0 bytes?

    
por Zayatzz 12.09.2013 / 08:48

3 respostas

2

Does this mean that its somehow django fault cause it looks like django returned 0 bytes?

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

    
por 12.09.2013 / 11:44
1

Use a diretiva error_page do nginx documentada aqui

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

    
por 12.09.2013 / 10:29
0

Recentemente tive o mesmo problema. O que eu fiz para consertar isso foi adicionar aos parâmetros de inicialização do uwsgi estes: –Catch-exceptions e –error-route-status = ”500 arquivo: nome do arquivo = / usr / local / nginx / html / index.html, status = 500 Erro interno do servidor”

Um deles era capturar exceções do django, mesmo se DEBUG = false. e o outro para redirecionar uma requisição para um arquivo em particular, de modo que o cliente evite ver uma página cheia de exceções do django e, ao invés disso, veja a mensagem “we are sorry blah blah”. Tenha em mente que a versão do uwsgi que estou usando é a 1.9.15.

    
por 19.09.2013 / 13:02