Как ограничить доступ по IP-адресу с Tomcat?

Кто-нибудь знает, может ли Tomcat ограничить доступ к определенному приложению по IP-адресу (например, Apache? .htaccess)?

5 ответов

Решение

Вы добавляете Valve к Context в context.xml (В частности, org.apache.catalina.valves.RemoteAddrValve). См. Документы по фильтрам удаленных хостов.

Это пример:

в \apache-tomcat-7.0.33\conf\server.xml:

<Engine name="Catalina" defaultHost="localhost">
    ...
    ...
    ...
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="10\.132\.77\.55|10\.132\.76\.120|10\.132\.77\.47"/>
    ...
</Engine>

В Tomcat 7 вы можете настроить его в web.xml,

Если это для всех веб-приложений, вы можете настроить его в tomcat7/conf/web.xmlЕсли это только для одного веб-приложения, вы можете настроить его в tomcat7/webapps/$(WEB_APP)/WEB-INF/web.xmlэто очень удобно.

Конфигурация использует RemoteAddrFilter фильтр, есть пример в разделе "Фильтры, предоставляемые контейнером".

Чтобы настроить ограничение доступа к вашему веб-приложению для определенных IP-адресов, добавьте следующие строки в файл /opt/tomcat/webapps/ROOT/META-INF/context.xml:

<Context antiJARLocking="true" path="/">
 <Valve className="org.apache.catalina.valves.RemoteIpValve" />
 <Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="{IP_address}" />
</Context>

Вот инструкция, как это сделать с помощью панели Jelastic.

В Tomcat 9 вы можете настроить его по пути:apache-tomcat-9.0.14\webapps\manager\META-INF\context.xml

Другие вопросы по тегам