You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Compute Engine实例部署Django应用并公网访问失败求助

排查GCE实例上Django应用公网访问失败问题

已完成操作概述

  • 通过Gunicorn启动Django应用,绑定0.0.0.0:8000,日志显示服务正常启动
  • 创建Nginx站点配置文件/etc/nginx/sites-available/AImage,并软链接到sites-enabled目录
  • 配置Nginx反向代理到http://0.0.0.0:8000,监听80端口,指定公网IP为server_name
  • 重启Nginx服务

本地可ping通GCE公网IP,但浏览器无法访问应用,可按以下步骤排查:


1. 检查GCE VPC防火墙规则

GCE默认防火墙会限制入站流量,需确保允许TCP 80端口的公网入站请求:

  • 登录GCE控制台,进入对应实例的VPC网络 -> 防火墙规则
  • 创建或确认存在一条规则,方向为入站,目标为实例,协议端口选择tcp:80,源IP范围设为0.0.0.0/0

2. 验证Nginx服务状态与日志

  • 检查Nginx是否正常运行:
    sudo systemctl status nginx
    
    若服务异常,先修复启动问题;若运行正常,查看错误日志排查反向代理问题:
    sudo tail -20 /var/log/nginx/error.log
    

3. 确认Gunicorn监听状态

在GCE实例内部,验证Gunicorn是否确实在监听8000端口:

ss -tulpn | grep 8000

输出应包含gunicorn进程,且监听地址为0.0.0.0:8000或127.0.0.1:8000

4. 本地测试应用与反向代理

在GCE实例内部,先测试Django应用本身是否可访问:

curl http://localhost:8000

若返回正常页面,再测试Nginx反向代理是否生效:

curl http://<你的GCE公网IP>

若curl也无法返回内容,说明Nginx配置或转发存在问题

5. 校验Nginx配置语法

运行以下命令检查配置文件是否存在语法错误:

sudo nginx -t

若报错,根据提示修正配置(比如server_name是否填写了正确的公网IP,proxy_pass地址是否正确,可尝试改为http://127.0.0.1:8000)

6. 检查实例本地防火墙

若实例启用了ufw或iptables,需确保允许80端口的入站流量:

# 针对ufw
sudo ufw allow 80/tcp
sudo ufw reload

内容的提问来源于stack exchange,提问作者Lê Hồng Nhật

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:15:22