无法访问GCP计算实例8080端口的SpringBoot应用如何排查
GCP计算实例8080端口SpringBoot服务公网访问不通排查
ECONNREFUSED错误的核心原因是目标端口没有正常接收公网请求,和浏览器提示无法访问的表现完全匹配,按以下顺序逐一排查即可:
- 首先确认SpringBoot的监听配置
SpringBoot默认可能绑定本地回环地址127.0.0.1,这种情况仅实例内部能访问,公网请求会被直接拒绝。登录实例执行命令ss -tulpn | grep 8080查看监听状态:如果返回结果的Local Address字段为
127.0.0.1:8080,即可确认是绑定地址错误。
修复方式:在SpringBoot配置文件中添加监听0.0.0.0的配置:
若使用application.properties,添加:
若使用server.address=0.0.0.0 server.port=8080application.yml,添加:
重启应用后再次执行上述ss命令,确认Local Address显示为server: address: 0.0.0.0 port: 80800.0.0.0:8080或:::8080再做后续测试。 - 核对GCP VPC防火墙规则的生效逻辑
仅配置开放8080端口不足以保证规则生效,必须确认三个配置项:- 规则基础配置:方向为入站,动作为允许,协议端口配置为
tcp:8080,不要误配为UDP或其他端口 - 目标匹配配置:规则的目标范围正确覆盖当前实例:如果规则选择指定目标标签,必须给对应计算实例添加匹配的网络标签,规则才会对该实例生效;若规则目标为VPC内所有实例可跳过此检查
- 来源范围配置:规则的来源IP范围配置正确:如果需要公网任意IP访问,来源段必须填写
0.0.0.0/0,若仅允许指定IP访问需确认客户端出口IP在允许范围内
- 规则基础配置:方向为入站,动作为允许,协议端口配置为
- 检查实例操作系统层面的防火墙拦截
GCP VPC防火墙是网络层面的管控,实例内部的系统防火墙默认也会拦截未放行的端口:- Debian/Ubuntu系列系统:执行
ufw status查看防火墙状态,若为启用状态,执行ufw allow 8080/tcp放行端口 - CentOS/RHEL系列系统:执行
firewall-cmd --list-ports查看已放行端口,若没有8080/tcp,执行firewall-cmd --add-port=8080/tcp --permanent && firewall-cmd --reload加载规则
- Debian/Ubuntu系列系统:执行
- 连通性校验顺序
先在实例本地执行curl http://127.0.0.1:8080/myservice,确认应用本身能正常返回响应,排除应用启动失败、路径配置错误的问题;本地验证通过后,再通过公网IP访问测试。
内容的提问来源于stack exchange,提问作者James Stan
相关产品推荐
相关产品推荐

