DEBUG = False 설정을 사용하는 django 500 오류(django 500 페이지를 표시하는 대신)의 Nginx 잘못된 게이트웨이(502) 오류

DEBUG = False 설정을 사용하는 django 500 오류(django 500 페이지를 표시하는 대신)의 Nginx 잘못된 게이트웨이(502) 오류

현재 설정에 문제가 있습니다... 그리고 문제는 django settings.py 파일에서 DEBUG = False를 설정하면 nginx가 500 오류에 대한 django 추적 표시를 중지하지만 500 페이지도 표시하지 않는다는 것입니다. nginx 502 잘못된 게이트웨이 오류만 표시됩니다.

추적이 발생할 때 나에게 메일을 보내도록 구성한 것처럼 추적과 관련된 이메일 오류가 발생합니다. 하지만 nginx 502 게이트웨이 오류가 아닌 사용자에게 멋진 500 페이지를 표시하고 싶습니다...

솔직히, 나는 문제의 근본 원인을 어디서부터 찾아야 할지조차 모릅니다. 일부 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가 0바이트를 반환한 것처럼 보이기 때문에 django 오류가 발생했다는 뜻인가요?

답변1

이것은 django가 0바이트를 반환한 것처럼 보이기 때문에 django 오류가 발생했다는 뜻인가요?

예, 여기에는 nginx 문제가 없습니다. 문제는 Django가 500 오류 페이지 대신 아무것도 반환하지 않는다는 것입니다.

답변2

문서화된 nginx의 error_page 지시문을 사용하세요.여기

이를 통해 Nginx는 백엔드에서 5XX 오류를 가로채고 최종 사용자에게 원하는 페이지를 표시합니다.

답변3

최근에 같은 문제가 발생했습니다. 이 문제를 해결하기 위해 내가 한 일은 uwsgi 시작 매개변수에 다음을 추가하는 것이었습니다: –catch-Exceptions 및 –error-route-status=”500 file:filename=/usr/local/nginx/html/index.html,status=500 Internal 서버 오류"

하나는 DEBUG=false인 경우에도 django에서 예외를 포착하는 것이었습니다. 다른 하나는 요청을 특정 파일로 리디렉션하여 클라이언트가 django 예외로 가득 찬 페이지를 보는 것을 방지하고 대신 "죄송합니다 어쩌구 저쩌고" 메시지를 표시합니다. 내가 사용하고 있는 uwsgi 버전은 1.9.15라는 점을 명심하세요.

관련 정보