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

use*_*465 7 redirect tomcat 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
Run Code Online (Sandbox Code Playgroud)

在tomcat服务器关闭时,如何将此页面重定向到其他自创建的维护页面?

小智 6

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

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

ErrorDocument 503 /maintance.html
Run Code Online (Sandbox Code Playgroud)


And*_*rij 6

如果您使用的是mod_jk和tomcat连接器,则这是预期的行为.如果你使用类似的东西

ErrorDocument 503 "foo"
Run Code Online (Sandbox Code Playgroud)

你会在页面上看到'foo'或者

ErrorDocument 503 "http://www.somedomain.com"
Run Code Online (Sandbox Code Playgroud)

这将成功引导您到somedomain.com.但如果你使用类似的东西

ErrorDocument 503 /maintenance.html
Run Code Online (Sandbox Code Playgroud)

Apache将无法找到[DocumentRoot] /maintenance.html,因为它在tomcat连接器的上下文中查找.您需要卸载连接器并告诉Apache从其他位置提供静态内容.

这是一个很好的指南,可以帮助您开始使用mod_jk. 使用Apache和Tomcat连接器的自定义错误页面

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

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

/503_maintenance.html
/503_maintenance.css
/503_corp_logo.png
Run Code Online (Sandbox Code Playgroud)

这样可以轻松地从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
Run Code Online (Sandbox Code Playgroud)

这基本上告诉Apache和mod_jk不要在tomcat连接器的上下文下安装带有503前缀的任何文件,而是在本地查找这些文件.如果您不想使用相对于DocumentRoot的位置,您可以像我一样使用和Alias.