无法从同VPC内的EC2实例访问另一EC2上部署的REST服务
解决同VPC内EC2实例无法访问REST API的问题
咱们一步步来排查你遇到的问题:同VPC里的win2实例没法访问win1上的http://<IP>:9090/ui,虽然你已经给win1的安全组开了80和443端口,但你的REST API实际用的是9090端口,这很可能是核心原因。下面是具体的排查和解决步骤:
1. 给win1的安全组添加入站9090端口规则
你当前的安全组只开放了80(HTTP)和443(HTTPS)端口,但你的应用监听的是9090,所以必须把这个端口也加入允许列表:
- 登录AWS EC2控制台,找到win1实例,查看它关联的安全组
- 进入安全组的「编辑入站规则」页面
- 添加一条新规则:协议选
TCP,端口范围填9090,来源可以设置为win2的私有IP(更安全)或者你的VPC的CIDR段(比如10.0.0.0/16,适合同VPC内所有实例访问),如果需要公网也能访问可以填0.0.0.0/0,但同VPC内优先用私有IP范围
2. 检查win1实例的Windows防火墙设置
Windows实例自带的Windows Defender防火墙可能会拦截9090端口的入站请求:
- 在win1上打开「Windows Defender防火墙」→「高级设置」
- 右键点击「入站规则」,选择「新建规则」
- 规则类型选「端口」,下一步选「TCP」,指定本地端口
9090 - 允许连接,然后限定来源为同VPC的IP范围(或者直接允许所有,测试阶段可以先这么做),最后给规则命名保存
3. 验证REST应用是否正确监听9090端口
确保你的应用真的在监听9090端口,而且不是只绑定了本地回环地址:
- 在win1上打开命令提示符,运行:
netstat -ano | findstr :9090 - 如果有输出,说明有进程在监听这个端口,记下PID可以去任务管理器对应到你的应用;如果没有输出,说明应用没启动或者配置错误,需要检查应用的配置文件,确认它绑定的是
0.0.0.0或者win1的私有IP(不能只绑定127.0.0.1,否则只有本地能访问)
4. 在win2上测试端口连通性
先从网络层面验证是否能连上9090端口,再看API的问题:
- 用PowerShell的话,运行:
Test-NetConnection <win1的私有IP> -Port 9090 - 或者用telnet(需要先启用Windows的telnet功能):
telnet <win1的私有IP> 9090 - 如果测试显示连通成功,那可能是你的API调用工具(比如浏览器、Postman)有问题,比如代理设置;如果连通失败,回到前面的安全组和防火墙设置排查
5. 检查VPC的网络ACL(可选)
如果前面的步骤都没问题,再检查VPC的网络ACL:
- 默认的网络ACL是允许所有入站和出站流量的,但如果自定义了ACL,要确保入站规则允许TCP 9090端口的流量,出站规则允许返回的临时端口流量(通常是1024-65535)
内容的提问来源于stack exchange,提问作者Swaminathan S
相关产品推荐
相关产品推荐

