通过端口限制对 Servlet 的访问

Restrict Access to a Servlet by Port

我的 Tomcat 服务器有一个服务,三个连接器侦听端口 8080、8081 和 50000,我想只允许从端口 50000 访问一些 servlet。

我尝试使用 RemoteHostFilterRemoteIPFilter 按端口过滤客户端的访问,但没有成功。

<filter>
    <filter-name>RemoteFilter</filter-name>
    <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
    <init-param>
        <param-name>deny</param-name>
        <param-value>\d+\.\d+\.\d+.\d+:8080</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>RemoteFilter</filter-name>
    <url-pattern>/my-servlet-mapping</url-pattern>
</filter-mapping>

我也尝试使用 <Context><Valve> 来实现这一点,但它也没有用。

你能告诉我我做错了什么吗?

RemoteAddrFilter 的 Javadoc:

Concrete implementation of RequestFilter that filters based on the string representation of the remote client's IP address.

不是服务器的 IP 地址,而是客户端的 IP 地址。

要在服务器端口上进行过滤,请编写您自己的过滤器实现。