使用 Apache 提供静态资产的理想 Apache Tomcat 设置是什么样的?

使用 Apache 提供静态资产的理想 Apache Tomcat 设置是什么样的?

好吧,我知道这个问题总是被问到:“通过 Apache 连接 Tomcat 的最佳方式是什么”。但我仍然没有找到一个明确的答案,也许没有答案,但我只是在寻找一个可行的高性能设置。我读过的很多文档都引用了 2005 年及以前的文章。我正在寻找 2010 年的解决方案 :)

我有一个当前设置(不是我创建的),它使用 mod_rewrite 将所有流量从 apache 重写到 tomcat:

RewriteRule ^(.*) ajp://localhost:8009$1 [P,L]

我们在 tomcat 中有一个应用作为 ROOT 应用。因此,现在我使用 mod_rewrite 通过 ajp 发送请求(这与 mod_proxy_ajp 不同吗??)。 有什么原因导致这一结果不尽人意?

还,我希望让 Apache 提供静态资产减轻 Tomcat 的负担,这样我就可以轻松使用 mod_expires/deflate 等...我不确定如何做到这一点。

我在 webroot 中有一个“assets”(即 js/css)和“images”文件夹(与 WEB-INF 位于同一目录),所以我假设我需要某种匹配,/images并且/assets说“不要将其传递给 Tomcat”??

非常感谢您对当前设置的任何帮助/建议/意见。

顺便说一下,我正在使用:
apache2 - 2.2.9-10
Tomcat - 5.5.29

答案1

重写规则中的 P 是 Proxy

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !^(images|assets)
RewriteRule ^(.*) ajp://localhost:8009$1 [P,L]

答案2

如果你想说,路径下的东西http://localhost/静态/* 由 Apache 提供服务,那么您可以在规则之前设置一个 RewriteCond 来捕获所有不具有 /static/* URI 的内容,并通过 AJP 在 Tomcat 上转发,本质上让 /static/* 单独从 DocRoot 或别名等提供服务。

例如:

RewriteCond %{REQUEST_URI} !\/static\/.* [NC]
RewriteRule ^(.*) ajp://localhost:8009$1 [P,L] 

相关内容