防止 Tomcat 提供静态资源

Prevent Tomcat from serving static resources

我有一个用于静态内容的 Apache Web 服务器和一个带有一些 servlet 的 Tomcat 服务器。

Apache 提供包含在 WAR 中的静态资源,但来自外部目录 copied 来自已部署的 WAR 目录,而不是来自已部署的 WAR 目录本身。

当 Apache 收到后端请求时,它会将其路由到 Tomcat:

ProxyPass /backend ajp://localhost:8009/backend
ProxyPassReverse /backend ajp://localhost:8009/backend

我的问题是 Tomcat 也在服务于静态资源,例如,这两个请求服务于同一个网页:

http://foo.com/page.html
http://foo.com/backend/page.html

如何防止 Tomcat 提供静态资源?

我可以从部署的 war 目录中删除静态内容,但我正在寻找更好的方法。

您可以尝试将静态资源移动到 WEB-INF 文件夹内的某个位置。来自 Oracle servlet specification:

The WEB-INF directory is not part of the public document tree of the application. No file contained in the WEB-INF directory can be served directly to a client by the container. However, the contents of the WEB-INF directory are visible to servlet code using the getResource and getResourceAsStream() method calls on the ServletContext or includes/forwards using the RequestDispatcher.

您的脚本仍然可以从您的 WAR 复制资源,这只是一个文件存档。但是这些文件将无法再直接从您的 WAR.

访问