Как вернуть пользовательскую страницу с кодом ошибки 503, недоступную в приложении Meteor, на котором запущен Phusion Passenger Nginx - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь настроить страницу обслуживания для моего приложения Meteor 1.8.1, работающего в Ubuntu 18.04. Я использую Phusion Passenger / Nginx.

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

Я пытался добавить это в свой конфигурационный файл:

server {
    listen 80;
    server_name x.x.x.x;

    # Tell Nginx and Passenger where your app's 'public' directory is
    root /var/www/myapp/bundle/public;

    # Turn on Passenger
    passenger_enabled on;
    ...

    passenger_intercept_errors on;
    location / {
        return 503;
    }
    ....
}

, но приложение все еще отображается в моем браузере, когда я хочу увидеть страницу с ошибкой (я знаю! Противоположность обычной проблемы! )

Я также пытался поместить отдельный блок сервера перед основным блоком сервера приложений, в тот же файл конфигурации приложения:

server {
    error_page 503 /error503.html;
    location / {
        return 503;
    }
}

и это:

server {
    error_page 503 /error503.html;
    return 503;
}

Я не могу найти какие-либо конкретные c инструкции для Пассажира, но этот код выглядит нормально для Nginx.

Редактировать: если я просто верну 503 без блока местоположения в моем основном приложении серверный блок, который возвращает код ошибки, но теперь я не могу отобразить пользовательскую страницу ошибки, и я не знаю, почему блок местоположения не работает.

Код ниже показывает 503 ошибка в браузере, указывающая на то, что моя пользовательская страница обслуживания обнаружена, но я все еще Я вижу страницу ошибки 503 по умолчанию:

    if (-f /var/www/html/maintenance_on.html) {
        return 503;
    }

    error_page 503 /var/www/html/maintenance_on.html;

Я также пробовал это:

    if (-f /var/www/html/maintenance_on.html) {
        return 503;
    }

    error_page 503 /maintenance_on.html;
    location = /maintenance_on.html {
        root /var/www/html/;
    }

Есть идеи, что я делаю неправильно? Спасибо.

...