如何通过Tomcat将IP地址访问限制到特定路径?

时间:2018-11-11 05:17:57

标签: tomcat ip-restrictions

亲爱的

任何人都可以帮助通过IP地址限制对Web应用程序中特定路径的访问吗?

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

如果有人可以提供帮助,我们将非常感激。

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

1 个答案:

答案 0 :(得分:0)

正如您提到的,RemoteAddrValve太宽了,无法满足您的需求。解决方案是使用同时符合条件(IP +路径)和规则的RewriteValve,拒绝流量。不要忘记阅读Tomcat doc,以了解有关重写的更多信息。

首先,在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禁止的HTTP代码。您可以根据需要更改规则,例如重定向到登录页面(标记R)。

如果您的网站公开在Internet上,请不要忘记任何人都可以使用代理来隐藏其真实IP地址。如果您在Apache前面使用反向代理,则可能需要对其进行适当的配置,以免失去Tomcat的用户真实IP,而后者只能看到反向代理IP。