通过端口限制对 Servlet 的访问
Restrict Access to a Servlet by Port
我的 Tomcat 服务器有一个服务,三个连接器侦听端口 8080、8081 和 50000,我想只允许从端口 50000 访问一些 servlet。
我尝试使用 RemoteHostFilter
和 RemoteIPFilter
按端口过滤客户端的访问,但没有成功。
<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 地址。
要在服务器端口上进行过滤,请编写您自己的过滤器实现。
我的 Tomcat 服务器有一个服务,三个连接器侦听端口 8080、8081 和 50000,我想只允许从端口 50000 访问一些 servlet。
我尝试使用 RemoteHostFilter
和 RemoteIPFilter
按端口过滤客户端的访问,但没有成功。
<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 地址。
要在服务器端口上进行过滤,请编写您自己的过滤器实现。