Error de Nginx bad gateway (502) en errores de django 500 (en lugar de mostrar la página de django 500) con DEBUG = False

Error de Nginx bad gateway (502) en errores de django 500 (en lugar de mostrar la página de django 500) con DEBUG = False

Tengo un problema con mi configuración actual... Y el problema es que si configuro DEBUG = False en el archivo django settings.py, nginx deja de mostrar rastreos de django en errores 500, pero tampoco muestra nuestra página 500. Simplemente muestra el error de puerta de enlace incorrecta nginx 502.

Recibo el error de correo electrónico con el rastreo, tal como lo configuré para enviarme por correo los rastreos cuando ocurren. Pero quiero mostrar una buena página 500 a los usuarios, no el error de puerta de enlace nginx 502...

Honestamente, ni siquiera sé por dónde empezar a buscar la raíz del problema. Estoy preparado para publicar todos los archivos de configuración necesarios, si algún experto en nginx viene y me dice lo que quiere ver.

alan

Edit1: busqué lo que muestra el archivo de registro en uno de esos 500 errores y muestra esto:

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

¿Esto significa que de alguna manera es una falla de Django porque parece que Django devolvió 0 bytes?

Respuesta1

¿Esto significa que de alguna manera es una falla de Django porque parece que Django devolvió 0 bytes?

Sí, no hay ningún problema de nginx aquí, el problema es que Django no devuelve nada en lugar de una página de error 500.

Respuesta2

Utilice la directiva error_page de nginx documentadaaquí

Con eso, Nginx interceptará el error 5XX del backend y mostrará cualquier página que desee al usuario final.

Respuesta3

Recientemente tuve el mismo problema. Lo que hice para solucionar esto fue agregar a los parámetros de inicio de uwsgi estos: –catch-exceptions y –error-route-status=”500 file:filename=/usr/local/nginx/html/index.html,status=500 Internal Error del Servidor"

Una era detectar excepciones de Django, incluso si DEBUG=false. y el otro para redirigir una solicitud a un archivo en particular para que el cliente evite ver una página llena de excepciones de Django y, en su lugar, vea un mensaje de "lo sentimos, bla, bla". Tenga en cuenta que la versión de uwsgi que estoy usando es la 1.9.15.

información relacionada