需修改 conf/server.xml 中 Connector 的 address 属性为 "0.0.0.0" 并重启,再配置系统防火墙放行 8080 端口,确保应用正确部署于 ROOT 或带上下文路径访问。

Tomcat 默认只监听 localhost 怎么改
Tomcat 启动后默认绑定 127.0.0.1,外部设备访问会直接失败,连连接超时都等不到——因为根本没在监听局域网 IP。关键不是“能不能连”,而是“压根没开那个口子”。
- 修改
conf/server.xml中的Connector节点,把address="127.0.0.1"删掉或改成address="0.0.0.0"(监听所有接口) - 别只改
port,address属性不显式声明时,Tomcat 9+ 默认 fallback 到localhost,不是0.0.0.0 - 改完必须重启 Tomcat,热加载不生效;用
ps aux | grep tomcat或任务管理器确认旧进程已退出 - 验证方式:在服务器本机执行
netstat -an | grep :8080,看到*:8080或0.0.0.0:8080才算成功,127.0.0.1:8080仍不行
Windows 防火墙拦了 8080 端口怎么办
即使 Tomcat 监听了 0.0.0.0:8080,Windows 防火墙默认阻止所有入站非系统服务端口,手机或另一台电脑 ping 得通但浏览器打不开页面,大概率卡在这儿。
- 打开「高级安全 Windows 防火墙」→「入站规则」→「新建规则」→「端口」→ TCP → 特定本地端口填
8080(或你改的其他端口) - 规则作用域里,“远程 IP 地址”建议选「下列 IP 地址」,加一条
192.168.0.0/16(覆盖常见局域网段),别选「任何 IP 地址」暴露风险 - 如果用的是第三方防火墙(如 360、腾讯电脑管家),它可能劫持或屏蔽 Windows 原生规则,得单独在它的界面里放行
java.exe或端口 - 临时验证可先禁用防火墙测试,但别长期关闭;禁用后仍连不上,问题一定在 Tomcat 配置或网络层
局域网其他设备访问时显示 404 或空白页
能建立 TCP 连接(比如 telnet 成功),但浏览器返回 404 或白屏,说明请求到了 Tomcat,但没路由到你的应用——多半是路径或部署问题,不是网络配置。
- 确认项目是以 ROOT.war 或 ROOT 目录形式部署在
webapps/下;否则必须带上下文路径,比如http://192.168.1.100:8080/myapp/,不能省略/myapp/ - 检查
webapps/下对应目录是否完整,WEB-INF/web.xml和WEB-INF/classes/是否存在;解压 WAR 包后若缺文件,可能是 IDE 自动部署失败,手动复制更可靠 - 浏览器地址栏务必写全 IP + 端口 + 上下文路径,不要依赖 hosts 或域名;手机访问时尤其注意别误输成
localhost:8080(那是它自己的回环) - Tomcat 日志(
logs/catalina.out)里搜deploy或异常堆栈,看是否有ClassNotFoundException或ServletException,这类错误不会报在浏览器上
Mac/Linux 下 iptables 或 ufw 拦截了请求
Linux 发行版或 macOS(通过 brew 安装的 Tomcat)可能启用默认防火墙策略,ufw status 或 sudo iptables -L 常能看到 DROP 规则挡在前面。
立即学习“Java免费学习笔记(深入)”;
- Ubuntu/Debian 系统:运行
sudo ufw allow 8080,再sudo ufw reload;别只enable不allow,ufw 默认 deny 所有入站 - CentOS/RHEL:用
sudo firewall-cmd --permanent --add-port=8080/tcp,然后sudo firewall-cmd --reload - macOS 如果开了「防火墙」(系统设置 → 隐私与安全性 → 防火墙),需在「防火墙选项」里勾选
java或tomcat,或临时关闭测试 - 注意:云服务器(如阿里云、腾讯云)还有安全组层面的端口控制,本地调试没问题但外网/跨子网访问失败时,优先查这个
真正卡住人的往往不是“怎么配”,而是改了一处以为好了,结果防火墙、Tomcat 绑定、应用路径、客户端输入四层里有三层没对齐。尤其是 Windows 用户容易忽略自带防火墙,Mac 用户常忘了系统级防火墙开关,而日志里那句 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [...] has finished in [...] 看似成功,其实可能只是 WAR 解压完了,后续类加载失败静默吞掉了。


















