LINUX.ORG.RU
ФорумAdmin

nginx. как отобразить 500 ошибку?

 


0

2

Приветствую Вас.

Задача стоит показывать error_page вслучае возникновения внештатной ситуации. Разрабов попросил присылать мне 500-ю ошибку при таких ситуациях, что бы у меня отрабатывал конфиг:

    error_page   500 502 503 504 403 /50x/er.html;
        location /50x {
        root   /var/www/;
        allow all;
    }

проверяю так: ставлю deny all; ----> вижу er.html ---- хорошо

Но когда сайт мне присылает 500 по проверочному url, я вижу строку «Could not process request», хотя ожидаю увидеть er.html

Проверочный url такой: http://site.com/test.xhtml

F12 в браузере вижу:

name  \ status \ type \ initiator 
test.xhtml \ 500 \ document \ other 

Вроде я получил code 500. Почему же не отрабатывает его nginx? Что я не так написал?

Заранее спасибо за потраченное на этот вопрос время.

РЕШЕНИЕ :

И вы правы! (vel)

По вашей ссылке раскрутил вопрос: https://stackoverflow.com/questions/8715064/nginx-not-serving-my-error-page/8...

Узнал что error_page обрабатывает ошибки, только сгенерированные nginx. По умолчанию nginx возвращает все, что возвращает прокси-сервер, независимо от кода состояния http.

Итог: Добавил proxy_intercept_errors on; в основной location. Теперь nginx хватает ошибки возвращаемые как свои и показывает мне мой error_page.

(делал это что бы при падении БД за которую цепляется сайт, была не ошибка 500, а красивая заглушка подставленная в error_page)

Большое спасибо за ваше время и верное направление!



Последнее исправление: ishk0 (всего исправлений: 1)

Ответ на: комментарий от Deleted

Боюсь что ситуация не изменилась.

добавил internal; save + service nginx restart. Опробовал другой браузер - иск. вариан кеширования. Вижу туже строку «Could not process request»

Проповал добавить internal; как в начало location так и в конец. Результат не меняется .

ishk0
() автор топика
Ответ на: комментарий от ishk0

текущий (но всё еще не рабочий) конфиг

    error_page   500 502 503 504 403 /50x/er.html;
        location /50x/er.html {
#       internal;
        root   /var/www/;
        allow all;
        internal;
    }

ishk0
() автор топика
Ответ на: комментарий от ishk0

Ситуация очень специфичная, как найдешь решение, обязательно отпиши сюда.

Deleted
()
Ответ на: комментарий от vel

И вы правы!

По вашей ссылке раскрутил вопрос: https://stackoverflow.com/questions/8715064/nginx-not-serving-my-error-page/8...

Узнал что error_page обрабатывает ошибки, только сгенерированные nginx. По умолчанию nginx возвращает все, что возвращает прокси-сервер, независимо от кода состояния http.

Итог: Добавил proxy_intercept_errors on; в основной location. Теперь nginx хватает ошибки возвращаемые как свои и показывает мне мой error_page.

(делал это что бы при падении БД за которую цепляется сайт, была не ошибка 500, а красивая заглушка подставленная в error_page)

Большое спасибо за ваше время и верное направление!

ishk0
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.