AWS EC2 Linux实例无法通过公网IPv4 DNS访问Spring Boot项目
解决AWS EC2上Docker部署Spring Boot项目连接拒绝问题
以下是逐步排查和解决的具体步骤:
1. 验证Spring Boot服务监听地址
Spring Boot默认仅监听localhost,会导致Docker端口映射后外部无法访问:
- 进入容器检查端口监听情况:
输出需包含docker exec final-app ss -tulpn | grep 80810.0.0.0:8081,而非仅127.0.0.1:8081。 - 调整Spring Boot配置:在
application.properties或application.yml中添加/修改:
重新构建镜像并运行容器。server.address=0.0.0.0 server.port=8081
2. 检查容器运行状态与服务日志
确认服务是否正常启动:
- 查看容器运行状态:
确保docker psfinal-app和docker-mysql容器状态均为Up。 - 查看服务启动日志,排查启动失败或数据库连接异常:
docker logs final-app
3. 测试EC2实例内部访问
在EC2控制台执行命令,验证服务在实例内部是否可达:
curl http://localhost:8081 # 或使用实例私有IP测试 curl http://<EC2私有IP>:8081
如果内部访问失败,说明问题出在服务本身或容器配置,与安全组无关。
4. 关闭EC2实例内部防火墙
部分Linux发行版默认开启防火墙,可能拦截端口:
- 对于CentOS/RHEL系统:
sudo systemctl stop firewalld sudo systemctl disable firewalld - 对于Ubuntu/Debian系统:
关闭后再次测试外部访问。sudo ufw disable
5. 确认安全组与实例关联
- 进入AWS EC2控制台,检查当前实例的安全组,确认已配置的TCP 8081端口入站规则(允许
0.0.0.0/0和::/0)确实关联到该实例。 - 检查网络ACL:若使用自定义ACL,需确保入站规则允许TCP 8081流量,出站规则允许所有响应流量。
6. 确认访问地址格式
访问时必须指定端口:
http://<EC2公网IPv4 DNS>:8081
不要省略端口号,避免误用默认80端口。
内容的提问来源于stack exchange,提问作者Salahuddin Shayan
相关产品推荐
相关产品推荐

