Google Cloud Platform VM部署页面遇连接意外关闭问题求助
我之前帮好几个朋友排查过类似的GCP VM访问问题,大概率是这几个环节出了问题,咱们一步步来排查:
第一步:确认Web服务是否正常运行
- 先通过SSH登录你的VM,用命令检查服务进程状态:
- 如果用Nginx:
ps aux | grep nginx - 如果用Apache:
ps aux | grep apache2 - 如果是用Python临时起的服务:
ps aux | grep http.server
- 如果用Nginx:
- 在VM本地测试访问:执行
curl http://localhost或curl http://127.0.0.1,如果拿不到你的Hello, world!页面,说明服务本身没配置/启动成功,先把服务跑起来再说。
第二步:检查GCP控制台的防火墙规则
这是GCP里最容易踩坑的点!
- 登录GCP控制台,找到你的VM实例,进入详情页查看「防火墙」标签,确认有没有允许入站流量到你使用的端口(比如80端口,或者自定义端口)。
- 如果没有对应规则,去VPC网络的「防火墙」页面新建规则:
- 目标:选择你的VM所在的网络标签(或者选「所有实例在网络中」)
- 来源IP范围:测试阶段可以填
0.0.0.0/0(生产环境请限制特定IP段!) - 协议和端口:选
tcp,填入你的端口号(比如80) - 给规则起个直观的名字,比如
allow-http-external
第三步:检查VM内部的防火墙
有些Linux镜像自带防火墙(比如UFW或iptables),就算GCP控制台开了规则,VM内部挡住也没用:
- 用
sudo ufw status查看UFW状态,如果是开启状态,执行sudo ufw allow 80/tcp允许对应端口的流量 - 如果是iptables,执行
sudo iptables -L查看规则,必要时添加允许命令:sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
第四步:确认VM的外部IP正确性
- 检查GCP控制台里VM的「外部IP」是不是你访问的那个——动态IP的VM重启后可能会更换IP,如果你没设置静态IP,重启后一定要刷新控制台确认最新IP。
第五步:检查服务的监听地址
- 执行
sudo netstat -tulpn | grep LISTEN,确认你的服务是监听0.0.0.0(允许所有IP访问),而不是只监听127.0.0.1(仅限本地访问)。- 比如用Python临时起服务,要确保命令是:
python3 -m http.server 80 --bind 0.0.0.0 - 如果是Nginx,检查
/etc/nginx/sites-available/default里的listen配置:listen 80 default_server; listen [::]:80 default_server;
- 比如用Python临时起服务,要确保命令是:
按照这个步骤排查,基本能解决90%以上的访问问题。我上次帮同事排查,就是他忘了在GCP控制台开防火墙规则,折腾了半小时😂
内容的提问来源于stack exchange,提问作者Miah Thompson




