Рейтинг:0

Заставить Nginx возвращать пользовательскую страницу ошибки, когда бэкэнд не работает

флаг in

У меня Nginx работает как обратный прокси-сервер, а за ним стоит приложение Django. Приложение Django подключено к Nginx через UWSGI. Приложение Django развертывается с помощью Docker и отключается примерно на секунду во время развертывания. Я хотел бы поручить Nginx возвращать пользовательскую страницу ошибки 503 в течение этого периода.

Ниже моя конфигурация Nginx:

вышестоящий server_django {
    сервер 0.0.0.0:8000;
}

сервер {
    слушать 443 ssl http2;
    слушать [::]:443 ssl http2;
    имя_сервера server.com;

    место расположения / {
        # требуется для обслуживания статических ресурсов
        псевдоним /data/server.com/website_root/;
        try_files $uri @django;
    }

    местоположение @django {
        uwsgi_pass server_django;
        включить /etc/nginx/uwsgi_params;
    }
}

Я попытался добавить следующую конфигурацию внутри блока «сервер»:

uwsgi_intercept_errors включен;
error_page 502 503 504 = 503 @django_is_down;
местоположение @django_is_down {
    корень /error_pages/server.com/;
    add_header Retry-After 10 всегда;
    индекс 503.html;
}

но это не помогло, так как Nginx начал обслуживать страницу 404 по умолчанию, когда серверная часть не работает.

Как мне определить, когда Django не работает в Nginx, и предоставить пользовательскую страницу с ошибкой, когда это произойдет?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.