如何使用 mod_jk 通过 apache 和 tomcat 获取 html/css/jpg 页面服务器

如何使用 mod_jk 通过 apache 和 tomcat 获取 html/css/jpg 页面服务器

我在 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 指令所困扰了。

相关内容