部署在AWS EC2 Windows Server的Spring Boot应用仅本地可访问无法公网访问
AWS EC2 Windows Server Spring Boot 8085端口公网访问异常排查方案
1. 校验Spring Boot应用绑定地址
- 查看项目配置文件
application.properties/application.yml,确认server.address参数配置:如果设置为127.0.0.1或者localhost,需改为0.0.0.0,允许应用监听所有网卡的请求 - 在EC2实例中打开CMD执行
netstat -ano | findstr "8085",查看端口监听状态:如果返回的本地地址是127.0.0.1:8085,说明应用仅绑定了本地回环地址,修改配置重启应用即可。
2. 检查Windows Server内置防火墙规则
AWS安全组是云平台层面的访问控制,Windows实例本身的防火墙会单独过滤流量:
- 打开「Windows Defender防火墙」-「高级设置」-「入站规则」,确认有没有允许8085端口TCP协议入站的规则
- 无对应规则则新建规则:类型选「端口」→ 协议选TCP、特定本地端口填
8085→ 动作选「允许连接」→ 配置文件默认全选 → 命名保存即可 - 快速验证可以临时关闭Windows Defender防火墙,如果关闭后公网可以访问,即可确定是防火墙规则问题。
3. 复核EC2安全组配置
即使已经添加过规则,也需要排查配置错误的情况:
- 确认入站规则的类型为自定义TCP,端口范围正确填写
8085,源地址为0.0.0.0/0(临时测试用,生产环境建议限制为指定IP段),不要设置为仅本地IP或者实例内网地址 - 确认当前运行应用的EC2实例,确实关联了修改过规则的安全组,避免错改其他实例的安全组。
4. 排查网络链路配置
- 首先在你本地的电脑上打开PowerShell执行
Test-NetConnection 实例公网IP -Port 8085,如果返回TcpTestSucceeded为False说明端口不通 - 检查EC2所在子网的路由表:确认有指向互联网网关(IGW)、目的地址为
0.0.0.0/0的路由条目,只有公有子网的实例才能直接通过公网IP访问。
5. 排除应用层面限制
- 检查Spring Boot项目有没有配置全局IP拦截器、IP白名单之类的逻辑,拒绝了非本地IP的访问请求
- 可以临时修改应用端口为其他未被占用的端口(比如9090),按上面的步骤配置后测试,排除运营商或者云平台层面的端口封禁问题。
内容的提问来源于stack exchange,提问作者Snowy
相关产品推荐
相关产品推荐

