Перенаправить кота на страницу обслуживания, когда не работает - PullRequest
7 голосов
/ 04 января 2011

Я использую tomcat6 с настройкой mod_jk (оба работают на порте 80) на серверах ubuntu9.10 и 8.10.Я развертываю файлы war в / usr / share / tomcat / webapps.Во время развертывания, когда я перезагружаю tomcat, при доступе к приложению tomcat в браузере я получу следующую страницу:

Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Apache/2.2.11 (Ubuntu) mod_jk/1.2.15 Server at 192.168.2.54 Port 80

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

Ответы [ 2 ]

6 голосов
/ 06 июня 2014

Если вы используете соединители mod_jk и tomcat, это ожидаемое поведение. Если вы используете что-то вроде

ErrorDocument 503 "foo"

вы увидите 'foo' на странице или

ErrorDocument 503 "http://www.somedomain.com"

, который успешно направит вас на somedomain.com. Но если вы используете что-то вроде

ErrorDocument 503 /maintenance.html

Apache не сможет найти [DocumentRoot] /maintenance.html, так как он смотрит в контексте коннектора tomcat. Вам необходимо размонтировать ваш соединитель и сказать Apache, чтобы он обслуживал статический контент из другого места.

Это хорошее руководство для начала работы с mod_jk. Пользовательские страницы ошибок с коннекторами Apache и Tomcat

edit: вот решение, которое я использовал для правильной визуализации наших пользовательских страниц 503.

Во-первых, все наши пользовательские страницы ошибок имеют префикс кода ошибки, поскольку, скорее всего, наше веб-приложение не будет содержать файлы с этими кодами состояния в качестве корня имени файла. Так что для использования вашего примера у меня было бы что-то вроде следующих трех файлов в каталоге с именем 'custom_errors':

/503_maintenance.html
/503_maintenance.css
/503_corp_logo.png

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

#Alias the location of your custom error page files
Alias           /error/ /var/apache2/2.2/htdocs/custom_errors
ErrorDocument   503     /error/503_maintenance.html

#mount the core tomcat application
JkMount     /*      myWorker

#set the 503 code if myWorker is unavailable 
#and exclude the 503 pages from the tomcat/jboss application
JkMount     /*      myWorker;use_server_errors=503
JkUnMount   /503*   myWorker

Это в основном говорит Apache и mod_jk не монтировать файлы с префиксом 503 в контексте коннектора tomcat и вместо этого будет искать эти файлы локально. Если вы не хотите использовать местоположение относительно DocumentRoot, вы можете использовать и Псевдоним, как я.

6 голосов
/ 05 января 2011

Вы можете настроить пользовательскую страницу ошибок в Apache для кода ошибки 503.

http://httpd.apache.org/docs/2.2/mod/core.html#errordocument

ErrorDocument 503 /maintance.html
...