防止Tomcat提供静态资源

时间:2016-01-24 11:03:13

标签: apache tomcat7 ajp

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

Apache提供WAR中包含的静态资源,但是从部署的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目录中删除静态内容,但我正在寻找更好的方法。

1 个答案:

答案 0 :(得分:1)

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

  

WEB-INF目录不是应用程序的公共文档树的一部分。 WEB-INF目录中包含的文件不能由容器直接提供给客户端。但是,使用ServletContext上的getResource和getResourceAsStream()方法调用或使用RequestDispatcher包含/转发,servlet代码可以看到WEB-INF目录的内容。

您的脚本仍然可以从WAR复制资源,这只是文件存档。但是这些文件将不再可以直接从您的WAR访问。

相关问题