关闭时将tomcat重定向到维护页面

时间:2011-01-04 10:58:56

标签: tomcat redirect apache2

我在ubuntu9.10和8.10服务器上使用tomcat6和mod_jk设置(都在端口80上运行)。我在/ usr / share / tomcat / webapps下部署war文件。在部署期间,当我重新启动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 个答案:

答案 0 :(得分:6)

您可以在Apache中设置自定义错误页面,以获取错误代码503.

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

ErrorDocument 503 /maintance.html

答案 1 :(得分:5)

如果你正在使用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。 Custom Error Pages with Apache and Tomcat Connectors

编辑:这是我用来使我们的自定义503页面正确呈现的解决方案。

首先,我们所有的自定义错误页面都以错误代码为前缀,因为我们的网络应用程序可能不会包含这些状态代码作为文件名根目录的文件。 因此,对于使用您的示例,我会在名为' custom_errors'的目录中使用以下三个文件:

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

这样可以轻松地从jk mount中排除与自定义错误页面相关的任何文件。在我们的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不要在tomcat连接器的上下文下挂载任何带有503前缀的文件,而是在本地查找这些文件。如果您不想使用相对于DocumentRoot的位置,您可以像我一样使用和Alias。