我们在 Tomcat 6.0 实例前有一个稍微复杂的 Apache 2.2 设置。主 Tomcat webapp 部署在:
/opt/tomcat/webapps/ROOT
但我们也有定期更新的静态内容。我们不想强制构建和部署 Web 应用,因此这些内容单独存储在以下文件夹中:
/opt/tomcat/webapps/css
/opt/tomcat/webapps/foo
/opt/tomcat/webapps/bar
为了从 Apache 处理这个问题,我们使用 mod_rewrite 并且规则如下所示:
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^/css/(.*)$ - [L]
RewriteCond ROOT/%{REQUEST_FILENAME} -f
RewriteRule ^/css/(.*)$ ROOT/$1 [L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)\.(jpg|png|html|js)$ - [L]
RewriteCond ROOT/%{REQUEST_FILENAME} -f
RewriteRule ^(.*)\.(jpg|png|html|js)$ - [L]
RewriteRule ^/(.*)$ http://localhost:8080/$1 [P,L]
ProxyPassReverse / http://localhost:8080/
我现在认为我可能想要开始使用 mod_jk 并且我有两个问题:
- 是否值得使用 mod_jk?我不需要负载平衡。
- 是否有可能处理我概述的静态内容被引用为“http://www.example.com/css/foo.css“,但我们不知道它是位于 Tomcat webapp 中还是位于某个静态文件夹中。
答案1
您为什么考虑使用 mod_jk?
如果要使用 ajp 通信,为了加快向 tomcat 的传输速度,为什么不看看 mod_proxy_ajp?
您只需将 tomcat 重写规则更改为:-
RewriteRule ^/(.*)$ ajp://localhost:8080/$1 [P,L]