2016-01-24 5 views
1

У меня есть веб-сервер Apache для статического контента и сервер Tomcat с некоторыми сервлетами.Предотвращение использования статических ресурсов 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 статических ресурсов?

Я могу удалить статический контент из развернутого военного каталога, но я ищу лучший способ.

+0

Переместите статическое содержимое в папку в WAR, которая не является общедоступной. –

+0

Вы имеете в виду WEB-INF, не так ли? – IsidroGH

+1

Да, это может решить вашу проблему. Вы все еще можете скопировать из WAR, но теперь контент не будет общедоступным. –

ответ

1

Вы можете попробовать перемещать статические ресурсы где-то в папке WEB-INF. От Oracle servlet specification:

Каталог WEB-INF не является частью общедоступного дерева документов приложения. Ни один файл, содержащийся в каталоге WEB-INF, не может быть отправлен непосредственно клиенту контейнером. Однако содержимое каталога WEB-INF видимо для кода сервлета, используя вызовы getResource и getResourceAsStream() в ServletContext или включает/пересылает с помощью RequestDispatcher.

Ваш скрипт все еще может копировать источники из вашей WAR, который является всего лишь архивом файлов. Но эти файлы больше не будут доступны прямо из вашей WAR.