我在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服务器关闭时,如何将此页面重定向到其他自创建的维护页面?。
答案 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。