亲爱的
任何人都可以帮助通过IP地址限制对Web应用程序中特定路径的访问吗?
当前,我已经应用了RemoteAddrValve,它完全适用于所有Web应用程序目录。实际上,我只需要在特定路径上应用它即可。
如果有人可以提供帮助,我们将非常感激。
<Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="some IPs" denyStatus="404"/></Context>
答案 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。