Nginx. Maintenance режим — сайт в режиме обслуживания

Задача: быстро перевести сайт в режим обслуживания через nginx конфиг.

1 вариант — правильный (503 ошибка)

Данный способ будет возвращать 503 код ответа, что сразу даёт понять, что сайт временно не работает.

Создаём файл /etc/nginx/snippets/maintenance.conf с содержимым:

error_page 503 /maintenance.html;
location = /maintenance.html {
    root /etc/nginx/error/;
    internal;
}
if (-f /etc/nginx/error/maintenance.html) {
    return 503;
}

Создаём html файл /etc/nginx/error/maintenance.html с информационной страницей об обслуживании.

В файл виртуального хоста в секцию location / вставляем строку include snippets/maintenance.conf;

location / {
    include snippets/maintenance.conf;
    ...
}

Готово. Перезагружаем nginx, не забыв проверить правила:

nginx -t && service nginx reload

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

2 вариант — не правильный

Второй вариант будет отдавать код ответа 200 или 304, что не совсем является правильным для режима обслуживания.
Необходимо добавить следующий location перед основным location /. Если локейшны дублируется, то основной переименовать.

location ~ / {
    root /etc/nginx/error/;
    rewrite ^ /maintenance.html break;
}