Назад | Перейти на главную страницу

Ошибка плохого шлюза Nginx (502) при ошибках django 500 (вместо отображения страницы django 500) с параметром DEBUG = False

У меня проблема с моей текущей настройкой ... И проблема в том, что если я установил DEBUG = False в файле django settings.py, nginx перестанет показывать трассировку django при 500 ошибках, но также не показывает нашу страницу 500. Он просто отображает ошибку неверного шлюза nginx 502.

Я получаю сообщение об ошибке электронной почты с отслеживанием, так же как я настроил его для отправки мне обратных сообщений, когда они происходят. Но я хочу отображать красивую страницу 500 пользователям, а не ошибку шлюза nginx 502 ...

Честно говоря, я даже не знаю, с чего начать поиск корня проблемы. Я готов опубликовать все необходимые файлы конфигурации, если какой-нибудь эксперт по nginx придет и скажет мне, что он хочет увидеть.

Алан

Edit1: я посмотрел, какой файл журнала показывает одну из этих 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 байтов?

Означает ли это, что это почему-то ошибка django, потому что похоже, что django вернул 0 байтов?

Да, здесь нет проблемы с nginx, проблема в том, что Django ничего не возвращает вместо страницы с ошибкой 500.

Использование задокументированной директивы error_page в nginx Вот

Благодаря этому Nginx перехватит ошибку 5XX из бэкэнда и покажет конечному пользователю любую понравившуюся страницу.

У меня недавно была такая же проблема. Чтобы исправить это, я добавил в параметры запуска uwsgi следующие: –catch-exceptions и –error-route-status = »500 file: filename = / usr / local / nginx / html / index.html, status = 500 Internal Ошибка сервера"

Один из них - перехватить исключения из django, даже если DEBUG = false. а другой - для перенаправления запроса в конкретный файл, чтобы клиент избегал просмотра страницы, полной исключений django, и вместо этого видел сообщение «извините, бла-бла». Имейте в виду, что я использую версию uwsgi 1.9.15.