У меня проблема с моей текущей настройкой... И проблема в том, что если я устанавливаю DEBUG = False в файле django settings.py, nginx перестает показывать трассировки django при ошибках 500, но и не показывает нашу страницу 500. Он просто отображает ошибку nginx 502 bad gateway.
Я получаю ошибку электронной почты с трассировкой, так же как я настроил ее, чтобы отправлять мне трассировки, когда они происходят. Но я хочу отображать пользователям красивую страницу 500, а не ошибку шлюза nginx 502...
Честно говоря, я даже не знаю, с чего начать поиск корня проблемы. Я готов выложить все необходимые файлы конфигурации, если какой-нибудь эксперт по 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 байт?
решение1
Означает ли это, что это какая-то ошибка Django, потому что похоже, что Django вернул 0 байт?
Да, здесь нет проблемы с 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 Server Error"
Один из них — перехват исключений из django, даже если DEBUG=false. а другой — перенаправление запроса в определенный файл, чтобы клиент не видел страницу, полную исключений django, а вместо этого видел сообщение «мы сожалеем бла-бла». Имейте в виду, что версия uwsgi, которую я использую, — 1.9.15.