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。