@pcdesign

Как в nginx ограничить доступ к сайту по расписанию?

Есть некий сайт, который должен работать строго с 9-00 до 18-00.
А вечером и ночью давать отлуп.

Как это лучше реализовать?

Понятно, что можно по крону подсовывать конфиг в нужный час и рестартить nginx.
Но это как-то не красиво. Да и другие есть сайты там. И лишний раз делать рестарт nginx не хотелось бы.
  • Вопрос задан
  • 2610 просмотров
Решения вопроса 1
foboss
@foboss
Это можно сделать очень просто безо всяких перезагрузок.

Нижеприведенный пример показывает посетителям страничку из каталога /srv/www/maint/maintenance.html с кодом 503 (чтоб поисковики не сохраняли) если она есть и проксирует трафик на backend если ее нет.

location / {
try_files $uri $uri/index.html $uri.html @backend;
}

location @backend {
if (-f /system/maintenance.html) {
return 503;
break;
}
proxy_pass http://backend;
}

error_page 503 /system/maintenance.html;

location = /system/maintenance.html {
root /srv/www/maint;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
ну не рестарт а релоад, даунтайма в этом случае практически не будет.

а вообще... Можно попробовать прописать усолвие в конфиге, что мол если текущее время больше такого-то, и меньше такого-то, return какой-то статус код. У вас есть возможность брать текущее время в конфиге (SSI) и что-нибудь делать. Например вот.
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Простите
%D0%BE%D0%B1%D0%B5%D0%B4-%D0%BF%D0%B8%D0
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Вообще, неработающий сайт (когда веб-сервер его не обслуживает и получается ошибка и пичалька) - это нехорошо, нелогично, несеошно и вообще нечеловечно (не-юзер-френдли). Куда логичнее отнестись к своим посетителям с должным уважением, и вместо магии с конфигами сервера, в самом сайте на входе сделать проверку. Если время "рабочее" - пустить на сайт. Нерабочее - показать фигу и надпись "приходите через ХХ часов ХХ минут, мы работаем с ХХ до УУ.
Ответ написан
Комментировать
А по моему, лучший вариант создать задание на кроне, создать два разных конфиг файла - один с рабочими настройками, а другой - редирект всех запросов на страницу по умолчанию типа Index.html, в которой писать - "извините, идите спать".
по заданиям менять файлы конфигов и рестартовать nginx, чтобы он перечитал настройки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы