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

部署于EC2的Django应用仅能通过8000端口访问如何解决?

问题修复方案

核心问题原因

  • 你当前Nginx配置监听的是8000端口,而HTTP协议默认访问端口为80,不带端口访问时默认请求80端口,自然无法命中服务
  • 你实际启动的是Django自带的开发服务器runserver,直接占用了8000端口,当前可访问的服务完全没有走Nginx代理逻辑,你配置的Gunicorn套接字代理完全没有生效,且runserver仅可用于本地开发,不能用于生产环境部署

具体操作步骤

  1. 修改Nginx配置文件,将监听端口改为80,调整后的配置如下:
server {
    listen 80;
    server_name mydomain.info;

    # to avoid any error while fetching fevicon
    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
        root /home/ubuntu/dev/myproject;
    }

    location / {
        include proxy_params;
        # communicate via socket file created by Gunicorn
        proxy_pass http://unix:/home/ubuntu/dev/myproject.sock;
    }
}
  1. 验证Nginx配置语法是否正确,执行命令:
sudo nginx -t

返回success提示后,重启Nginx生效配置:

sudo systemctl restart nginx
  1. 停止当前运行的runserver进程,改用Gunicorn启动服务绑定配置中指定的套接字文件:
    如果尚未安装Gunicorn,先执行安装:
pip3 install gunicorn

进入项目根目录/home/ubuntu/dev/myproject后,执行启动命令:

gunicorn --workers 3 --bind unix:/home/ubuntu/dev/myproject.sock 你的项目名称.wsgi:application

注意将命令中的你的项目名称替换为你Django项目的实际名称(即包含wsgi.py文件的目录名)
4. 检查EC2实例安全组的入站规则,确保开放了80端口的公网访问权限,同时确认服务器内部防火墙(如ufw)也放行80端口
5. 直接访问你的域名mydomain.info或服务器公网IP,即可不带端口正常访问服务

内容的提问来源于stack exchange,提问作者Gintma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:36:04