无法从本地Mac访问EC2实例上8080端口的Spring Boot服务
排查EC2上Spring Boot 8080端口远程访问超时问题
先修正安全组入站规则配置
你说无法指定8080端口,大概率是操作时选错了规则类型。在AWS控制台的安全组入站规则面板,点击「添加规则」,类型选择自定义TCP,端口范围填8080,源地址根据需求设置(比如0.0.0.0/0用于公网访问,或你的Mac公网IP缩小访问范围),保存后再测试——别选默认的HTTP(80端口)类型,必须选自定义TCP来指定非标准端口。验证NACL双向规则
NACL是无状态的,要同时确保:- 入站规则允许TCP 8080端口(规则编号要低于拒绝类规则)
- 出站规则允许TCP 1024-65535端口(客户端发起连接后,响应会用随机高位端口返回)
检查EC2实例内部防火墙
登录EC2实例,执行对应命令确认本地防火墙是否拦截8080:- 若用iptables:
sudo iptables -L,如果有拦截,执行sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT - 若用firewalld(Amazon Linux 2等):
sudo firewall-cmd --list-all,如果没开放8080,执行sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload
- 若用iptables:
确认Spring Boot绑定地址
检查服务配置,确保Spring Boot绑定的是0.0.0.0而非localhost。可以启动时加参数--server.address=0.0.0.0,或在application.properties里设置server.address=0.0.0.0——如果绑定localhost,服务只会监听实例内部回环地址,外部完全无法访问。测试基础网络连通性
在你的Mac上执行nc -zv <EC2公网IP> 8080或telnet <EC2公网IP> 8080,看是否能建立连接。如果仍超时,检查:- EC2实例是否分配了公网IP/弹性公网IP
- 你的本地网络是否有防火墙、代理拦截8080端口
内容的提问来源于stack exchange,提问作者stallion
相关产品推荐
相关产品推荐

