如何在GCP中通过内部IP访问同VPC内无公网IP的Nginx服务器
GCP VPC内网Nginx 80端口Connection refused 解决步骤
一、Nginx服务侧排查
- 登录Nginx所在虚拟机,先验证Nginx服务状态,执行命令:
若服务未运行,执行systemctl status nginxsystemctl start nginx启动;若提示找不到服务,说明Nginx未正确安装,先完成Nginx安装流程再继续测试。 - 检查Nginx端口监听配置,执行命令:
如果返回结果中监听地址为ss -tulnp | grep :80127.0.0.1:80,说明Nginx仅允许本地访问,需要修改Nginx配置文件(默认路径为/etc/nginx/nginx.conf或者/etc/nginx/sites-available/default)中的listen字段为listen 80 default_server;,修改后执行nginx -t验证配置合法,再执行systemctl reload nginx重载配置。 - 检查虚拟机内部防火墙规则,执行
iptables -L -n验证80端口入方向流量未被拦截,若有拦截规则,执行以下命令放行:iptables -I INPUT -p tcp --dport 80 -j ACCEPT
二、GCP VPC网络配置排查
- 检查VPC防火墙入方向规则:需存在优先级高于拒绝规则的规则,满足源为演示虚拟机的内网IP/所在子网CIDR,目标端口允许TCP 80,规则应用对象包含Nginx虚拟机(可通过实例标签、服务账号或者直接指定实例IP匹配)。
- 确认两台虚拟机属于同一VPC,没有配置自定义路由将Nginx内网IP的流量转发到其他节点,默认同VPC下所有子网内网默认互通,无需额外配置路由。
- 检查Nginx虚拟机的网卡配置,确认绑定的内网IP和你填写的
$Nginx-internal-ip一致,没有配置错误。
三、连通性验证
- 先在Nginx虚拟机本地执行
curl 127.0.0.1,如果正常返回内容说明服务本身无问题。 - 再在Nginx虚拟机本地执行
curl 自身内网IP,如果返回报错则回到第一步检查监听配置。 - 最后在演示虚拟机上执行
nc -zv Nginx内网IP 80验证端口连通性,端口通的情况下再执行curl命令即可正常返回结果。
内容的提问来源于stack exchange,提问作者user16821057
相关产品推荐
相关产品推荐

