【问题标题】:How to restrict access by IP address to specific path with Tomcat?如何通过 Tomcat 限制 IP 地址对特定路径的访问?
【发布时间】:2018-11-11 05:17:56
【问题描述】:
亲爱的,
谁能帮助通过 IP 地址限制对 Web 应用程序上特定路径的访问?
目前我已经应用了 RemoteAddrValve,它完全适用于所有 Web 应用程序目录。实际上我只需要在特定路径上应用它。
如果有人可以提供帮助,我们将不胜感激。
<Context><WatchedResource>WEB-INF/web.xml</WatchedResource><Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="some IPs" denyStatus="404"/></Context>
【问题讨论】:
标签:
tomcat
ip-restrictions
【解决方案1】:
正如您所提到的,RemoteAddrValve 对于您的需要来说太宽泛了。解决方案是使用匹配两个条件(IP + 路径)和规则的RewriteValve,拒绝流量。不要忘记阅读Tomcat doc 以了解有关重写的更多信息。
首先,在 server.xml 中的 Host 定义中添加适当的阀门:
<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。