You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot配置指定IP启动Tomcat报错:端口8090未占用却无法启动

解决Spring Boot配置server.address后Tomcat启动失败的问题

你遇到的这个问题在Linux服务器上挺常见的——明明端口没被占用,配置了服务器IP后Tomcat却死活启动不了。我整理了几个排查和解决的方向,你可以一步步试:

1. 先确认配置的IP是否真的属于服务器网卡

Linux服务器可能有多个网卡(比如内网、公网网卡),你写的xxx.xxx.xxx.xxx说不定根本没绑定在服务器的任何网卡上。先跑个命令看看服务器实际的网卡IP:

ip addr show

找输出里标着inet的行,比如eth0或ens33网卡对应的IP,确保你配置的server.address和其中一个完全匹配。要是IP不对,Tomcat根本找不到要绑定的网卡,自然启动失败。

2. 检查防火墙/安全组是不是拦了端口

就算端口没被其他进程占着,Linux本地防火墙(比如firewalld或iptables)或者云服务器的安全组也可能阻止Tomcat绑定端口。可以先临时关防火墙测试(仅限排查,生产环境别直接关):

# 用firewalld的话
systemctl stop firewalld
# 用iptables的话
service iptables stop

关了之后能启动的话,就说明是防火墙的问题,赶紧加规则开放8090端口:

# firewalld永久开放端口
firewall-cmd --add-port=8090/tcp --permanent
firewall-cmd --reload
# iptables开放端口并保存
iptables -A INPUT -p tcp --dport 8090 -j ACCEPT
service iptables save

另外别忘了检查云服务器的安全组,入站和出站规则都要允许8090端口的TCP流量。

3. 验证进程的端口绑定权限

虽然8090是大于1024的端口(普通用户也能绑定),但不排除你的Tomcat启动用户没有绑定该IP:端口的权限。可以试试用root用户启动Spring Boot测试(生产环境别用root,只是排查):

sudo java -jar your-spring-boot-app.jar

如果root能启动,就给Java进程加个权限:

setcap 'cap_net_bind_service=+ep' /path/to/your/java/bin/java

4. 其实可以不用配置server.address

Spring Boot默认会绑定0.0.0.0,也就是监听服务器所有网卡的请求,完全不用特意指定server.address。只要端口开放了,外部就能通过服务器IP访问你的Spring Boot应用。

另外提一句,你的Angular部署在Apache上,后续大概率要处理跨域问题,要么在Spring Boot里加CORS配置,要么让Apache做反向代理,把Angular的API请求转发到8090端口,这样外部访问更安全也更顺畅。


内容的提问来源于stack exchange,提问作者seyed ali ziaei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:25:55