温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

tomcat怎样限制ip访问

发布时间:2026-10-29 10:49:04 来源:亿速云 阅读:95 作者:小樊 栏目:系统运维

在 Tomcat 中限制 IP 访问,常用有 RemoteAddrValve(推荐)、防火墙、context 级别限制 等方式。下面按常见场景说明。


一、使用 RemoteAddrValve(最常用)

Tomcat 自带 RemoteAddrValve,可以在 server.xml / context.xml / web.xml 中配置。

1️⃣ 全局限制(所有应用)

修改 conf/server.xml,在 <Host> 内添加:

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="192.168.1.*|127.0.0.1"
       deny=""
       denyStatus="403" />
  • allow:允许访问的 IP(支持正则)
  • deny:拒绝的 IP
  • 都不写:默认允许所有

2️⃣ 只拒绝某些 IP

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       deny="10.0.0.5|192.168.2.*"
       denyStatus="403" />

3️⃣ 只允许内网访问

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="192.168.*.*|127.0.0.1" />

⚠️ allow 和 deny 支持 * 和正则表达式


二、只对某个 Web 应用限制

在 META-INF/context.xml 或 conf/Catalina/localhost/xxx.xml:

<Context>
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
           allow="192.168.1.100" />
</Context>

三、在 web.xml 中限制(Servlet 规范)

<security-constraint>
    <web-resource-collection>
        <web-resource-name>restricted</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint />
</security-constraint>

⚠️ 这种方式不能直接限制 IP,一般配合登录使用。


四、使用防火墙(服务器级别,最安全)

Linux(iptables)

iptables -A INPUT -p tcp --dport 8080 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP

firewalld

firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="8080" protocol="tcp" accept'

五、Nginx + Tomcat(反向代理场景)

如果 Tomcat 前面有 Nginx:

location / {
    allow 192.168.1.0/24;
    deny all;
    proxy_pass http://localhost:8080;
}

六、常见注意点

  1. Real IP 问题

    • 如果有代理(Nginx / CDN),Tomcat 看到的不是真实 IP
    • 需配置 RemoteIpValve
  2. Tomcat 9+

    • 类名不变,配置方式一致
  3. 调试

    • 查看 catalina.out
    • 访问被拒会返回 403

七、示例:只允许公司 IP 访问

<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="203.0.113.10|203.0.113.11" />

如果你愿意,可以告诉我:

  • Tomcat 版本
  • 是否使用 Nginx / Docker
  • 是限制整个服务还是某个接口

我可以给你精确配置示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手