如何使用Tomcat将IP地址访问限制为特定路径



Dears,

有人能帮助通过IP地址限制对web应用程序上特定路径的访问吗?

目前我已经应用RemoteAddrValve,它完全适用于所有的web应用程序目录。实际上,我只需要在特定的路径上应用它。

如果有人能在这方面提供帮助,我们将不胜感激。

<Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="some IPs" denyStatus="404"/></Context>

正如您所提到的,RemoteAddrValve对您的需求来说过于宽泛。解决方案是使用与条件(IP+路径(和规则匹配的RewriteValve,拒绝流量。不要忘记阅读Tomcat文档来了解有关重写的更多信息。

首先,在server.xml中的主机定义中添加适当的阀:

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

假设您的主机名是默认主机名(localhost(,则需要创建包含以下内容的$CATALINA_BASE/conf/Catalina/localhost/rewrite.config文件:

RewriteCond %{REMOTE_ADDR} bad.ip.addr.ess
RewriteRule ^/forbidden-path(.*)$ / [F]

F标志将发送一个403 Forbidden HTTP代码。您可以根据需要更改规则,例如重定向到登录页面(标志R(。

如果你的网站在互联网上被曝光,不要忘记任何人都可以使用代理来隐藏它的真实IP地址。如果您在Apache前面使用反向代理,您可能需要对其进行充分配置,以避免用户的真实IP丢失。Tomcat只能看到您的反向代理IP。

最新更新