我在 ubutnu 服务器上使用 mod_jk 设置了 apache2 和 tomcat6,它们都在端口 80 上运行。我必须ErrorDocument 503 /maintenance.html
在 apache 配置中设置一个错误文档 503,不知怎么的,我设法让它工作,当 tomcat 停止时,错误页面由 apache 提供。开发人员创建了一个好看的错误页面(一个调用 css 和 jpg 的 html 页面),当 tomcat 关闭时,我被要求让 apache 提供这个页面。当我JkUnMount /*.css
在虚拟主机中尝试时,实际的 tomcat jsp 页面无法正常工作(丢失格式),因为 tomcat 应用程序使用 jsp、css、js、jpg 等。我正在尝试是否可以让 apache 和 tomcat 都提供 .css 和 .jpg,这样当 tomcat 关闭时,我将获得 apache 提供的 css 和 jpg,并提供正确的错误文档。有人有什么技巧吗?
这是我的 apache2 配置:
vim /etc/apache2/apache2.conf
Alias / /var/www/
ErrorDocument 503 /maintenance.html
ErrorDocument 404 /maintenance.html
JkMount / myworker
JkMount /* myworker
JkMount /*.jsp myworker
JkUnMount /*.html myworker
<VirtualHost *:80>
ServerName station1.mydomain.com
DocumentRoot /usr/share/tomcat/webapps/myapps1
JkMount /* myworker
JkUnMount /*.html myworker
</VirtualHost>
<VirtualHost *:80>
ServerName station2.mydomain.com
DocumentRoot /usr/share/tomcat/webapps/myapps2
JkMount /* myworker
JkMount /*.html myworker
</VirtualHost>
我简单尝试做的是,当 tomcat 停止时,css 和 jpg 应该由 apache 提供,而当 tomcat 启动时,css 和 jpg 应该由 tomcat 而不是 apache 提供。
答案1
如果您的维护页面不是太复杂,我建议将样式表内联到文档中。这样,您就不必像上面提到的那样费心处理复杂的规则集,并且仍然能够提供样式良好的维护页面。当然,这不一定能解决图像问题。
答案2
您的 JkMounts 是不是也更巧妙一些?因此(为了清晰起见,删除了一些行):-
Alias / /var/www/
ErrorDocument 503 /maintenance/maintenance.html
JkMount / myworker
JkMount /* myworker
JkUnmount /maintenance/* myworker
<VirtualHost *:80>
ServerName station1.mydomain.com
DocumentRoot /usr/share/tomcat/webapps/myapps1
JkMount /* myworker
JkUnmount /maintenance/* myworker
</VirtualHost>
然后您可以从维护文件夹内部静态链接到通用的 css 和 jpg。
答案3
将所有自定义错误放在一个子目录中,然后使用 no-jk 环境变量绕过该子目录的 mod_jk,例如:
SetEnvIfRequest_URI "/errors/*" no-jk
JkMount / myworker
JkMount /* myworker
JkMount /*.jsp myworker
然后,您就不需要被 JkUnMount 指令所困扰了。