Примечание: я новичок в этой ситуации!
Как нам удается перенаправлять каждый запрос во время обслуживания на страницу, на которой говорится, что сайт находится в режиме обслуживания?
Я хочу автоматизировать этот процесс (через cron):
В пункте 2, как перенаправить каждый запрос, когда apache не работает, или как люди справляются с этим (автоматически)? Оцените ваши ответы.
Спасибо
Если вы просто хотите сделать сайты недоступными во время обслуживания и использовать один файл для каждого виртуального хоста, например, ubuntu и debian, сделайте (/etc/apache2/sites-available
и sites-disabled
) вы можете просто отключить сайты, удалив ссылки с доступных сайтов (или убрав файлы). Вы также можете создать сайт «для всех» и включить на нем «сообщение обслуживания».
Другой вариант - использовать iptables для перенаправления всего трафика с http-порта на другой порт на сервере, где вы можете запустить вторичный веб-сервер (lighttpd или nginx или что-нибудь действительно маленькое, что может обслуживать статические html-страницы). Правило было бы таким:
iptables -t nat -A PREROUTING -p tcp -i ethX -d <server ip> –dport 80 -j DNAT –to <server ip>:<new port>
Вы также можете полностью перенаправить на другой сервер / порт.
Apache должен продолжать работать для обслуживания веб-сайтов, но вы можете настроить его для отправки всех запросов на веб-страницу обслуживания с помощью директивы DocumentRoot. Предполагая, что вы создаете страницу для уведомления об обслуживании внутри каталога обслуживания, она будет выглядеть так:
Нормальные операции:
DocumentRoot "/var/www/html"
#DocumentRoot "/var/www/html/maintenance"
Операции обслуживания: просто закомментируйте нормальную и раскомментируйте строку обслуживания:
#DocumentRoot "/var/www/html"
DoucmentRoot "/var/www/html/maintenance"
Затем просто перезагрузите Apache, чтобы изменения вступили в силу: /etc/init.d/httpd reload
. Когда вы закончите, просто повторите процесс в обратном порядке.
Обратите внимание, что если у вас несколько VirtualHosts, вам нужно будет изменить DocumentRoot для каждого из них. Может быть (возможно, есть) более простой метод - для простой настройки я этим и делаю.
Я не могу говорить об Apache, но вот как я это делаю в IIS (который, как предполагается, имеет для этого лучший интерфейс, IMHO).
В IIS / ASP.NET также есть хороший механизм, в котором «блочный файл» переводит весь сайт в режим обслуживания. Это делается путем помещения страницы "app_offline.htm" в корневую папку сайта. С другой стороны, odf заключается в том, что вы не можете тестировать сайт под другим URL-адресом, пока он находится (что может быть полезно для последней внутренней проверки того, что все работает). Итак, я пошел на ремонтный сайт.
Иметь отдельную папку и перенаправить сайт - ИМХО самый быстрый способ.