首页 > 解决方案 > Tomcat 远程地址过滤器不起作用 - Tomcat 9.0.X

问题描述

我正在尝试将我的一些应用程序端点限制为公共互联网。为此,我尝试了 tomcat 的远程地址过滤器。我将过滤器添加到我的应用程序的 web.xml(D:\apache-tomcat-9.0.22\webapps\myApp\WEB-INF)中。但它根本没有效果。我尝试了<param-name>allow</param-name> <param-name>deny</param-name>我的团队成员的特定 IP 地址,但仍然是我们都可以访问的。每次进行此更改时,我都重新启动了 tomcat。

<filter>
    <filter-name>Remote Address Filter</filter-name>
    <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
    <init-param>
      <param-name>deny</param-name> <!-- Tried to block my team mate's IP -->
      <param-value>10\.142\.16\.1</param-value>  <!-- My team mates IP address -->

      <!-- param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value -->

    </init-param>
 </filter>

 <filter-mapping>
    <filter-name>Remote Address Filter</filter-name>
    <url-pattern>/myApp/context/* </url-pattern>
 </filter-mapping>

我也尝试过在文档 <param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value>中,但我的队友和我自己仍然可以毫无问题地访问这些页面。

我的环境详情>>

I've used a standalone Tomcat. Servlet engine: [Apache Tomcat/9.0.22]
Running with Spring Boot v2.1.3.RELEASE, Spring v5.1.5.RELEASE

问题可能出在哪里?有没有办法确定这些web.xml变化是否真的反映了?

标签: javatomcatservlet-filterstomcat9

解决方案


我发现了问题。问题出在 url 模式上。我们不应该将应用程序上下文添加到 url 模式。

现在这适用于以下设置。

<url-pattern>/actuator/health </url-pattern>

推荐阅读