Tomcat: ограничить доступ к localhost для / только одного / веб-приложения - PullRequest
12 голосов
/ 07 марта 2011

Я использую Tomcat 6 для обслуживания нескольких веб-приложений, большинство из которых являются общедоступными.Но я хотел бы ограничить доступ к только одному веб-приложению, разрешив соединения только с локального хоста.

Я могу ограничить доступ для всех веб-приложений, используя контекстный контекстXML, как описано в:

Но я не могу понять, как ограничить доступ наПриложениеЕсть ли способ сделать это с помощью web.xml моего приложения?Или добавив дополнительные правила в context.xml?

Спасибо,

-B


Решение по подбору:

$ cp /var/lib/tomcat6/conf/context.xml \ 
   /var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml

$ cat /var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml

<Context>
    <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="localhost"/>
... {as previously} ...
</Context>

Ответы [ 3 ]

9 голосов
/ 07 марта 2011

Вы можете создать отдельный context.xml для вашего приложения.

Это отрывок из документа Tomcat по настройке контекста: Элементы контекста могут быть явно определены:

  • В файле $CATALINA_HOME/conf/context.xml: информация об элементе Context будет загружена всеми веб-приложениями. В файле $CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default: информация об элементе Context будет загружена всеми веб-приложениями этого хоста.
  • В отдельных файлах (с расширением .xml) в каталоге $CATALINA_HOME/conf/[enginename]/[hostname]/. Имя файла (без расширения .xml) будет использоваться в качестве пути к контексту. Многоуровневые контекстные пути могут быть определены с использованием #, например, foo#bar.xml для контекстного пути /foo/bar. Веб-приложение по умолчанию может быть определено с помощью файла с именем ROOT.xml.
  • Только если файл контекста не существует для приложения в $CATALINA_HOME/conf/[enginename]/[hostname]/; в отдельном файле на /META-INF/context.xml внутри файлов приложения. Если веб-приложение упаковано как WAR, тогда /META-INF/context.xml будет скопировано в $CATALINA_HOME/conf/[enginename]/[hostname]/ и переименовано в соответствии с контекстным путем приложения. Если этот файл существует, он не будет заменен, если в базу приложения хоста будет добавлена ​​новая WAR с более новым /META-INF/context.xml.
2 голосов
/ 05 ноября 2012

Разрешение localhost не сработало для меня.Я использую RemoteAddrValve вместо этого.Помните, что некоторые системы используют адреса IPv4 (ваш фильтр должен соответствовать 127.0.0.1), в то время как другие используют адреса IPv6 (полный адрес, а не сокращенные обозначения, такие как ::1).

<Context>
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
           allow="0:0:0:0:0:0:0:1,127\.0\.0\.1" />
</Context>

Атрибут allow принимает регулярное выражение, поэтому необходимо избегать точек.Как объяснил Дмитрий Негода , это относится к /META-INF/context.xml.

0 голосов
/ 17 июля 2013

Перейти по следующему пути: C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ conf \ Catalina \ localhost \

По этому пути вы найдете файл «manager.xml».

Отредактируйте файл «manager.xml» со ​​следующим содержанием:

  <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
   allow="127.0.0.1,10.100.1.2"/>

  <!-- Link to the user database we will get roles from
  <ResourceLink name="users" global="UserDatabase" 
    type="org.apache.catalina.UserDatabase"/>
  -->

****** сохранить и запустить сервер .... Вы получили это.ПРИМЕЧАНИЕ: 127.0.0.1 ОЗНАЧАЕТ ВАШУ СИСТЕМУ IP 10.100.1.2 - ЭТО ВАШ ДРУГ

...