Подтвердить что ты не робот

Tomcat: Ограничить доступ к локальному хосту для/только одного/webapp

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

Я могу ограничить доступ для всех webapps, используя клапан в контексте .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>
4b9b3361

Ответ 1

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

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

  • В файле $CATALINA_HOME/conf/context.xml: информация об элементе Контекста будет загружена всеми веб-серверами. В файле $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

Разрешение 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.

Ответ 3

Перейти к следующему пути: 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 -ЭТО ВАШ ДРУГ