2013-05-27 102 views
5

我想限制哪些URL可以在我的Tomcat服务器上根据IP地址访问。我试图做的是允许在通过回送地址(即本地主机)访问tomcat时访问任何地方,并且只允许访问所有其他远程IP的某些区域。我在conf/web.xml中有以下两个过滤器,但它们并没有按照我的意愿行事。现在所有远程访问被拒绝(不是我想要的)和全部本地访问正在被允许(我想要的)。我无法让tomcat允许所有IP地址访问/ terms/,/ help/等。使用多个Tomcat容器提供的过滤器(远程地址过滤器)

任何指针非常感谢。

<!-- ================== Built In Filter Definitions ===================== --> 

<filter> 
    <filter-name>Restrict Remote Filter</filter-name> 
    <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class> 
    <init-param> 
     <param-name>allow</param-name> 
     <param-value>\d+\.\d+\.\d+\.\d+</param-value> <!-- for any IP address, * not allowed here --> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>Restrict Remote Filter</filter-name> 
    <url-pattern>/terms/*, /help/*, /messagebroker/*</url-pattern> <!-- allow access to these areas only --> 
</filter-mapping> 

<filter> 
    <filter-name>Allow Localhost Filter</filter-name> 
    <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class> 
    <init-param> 
     <param-name>allow</param-name> 
     <param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value> <!-- for localhost access… --> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>Allow Localhost Filter</filter-name> 
    <url-pattern>/*</url-pattern> <!-- access all areas --> 
</filter-mapping> 

回答

3
<url-pattern>/terms/*, /help/*, /messagebroker/*</url-pattern> 

尝试每个模式单独url-pattern的,据我所知,字符“”(逗号)不能被识别为特殊字符,而您的网址的一部分。试试这个:

<url-pattern>/terms/*</url-pattern> 
<url-pattern>/help/*</url-pattern> 
<url-pattern>/messagebroker/*</url-pattern>