You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何移除Django本地部署域名后的端口号8000

如何移除Django本地部署域名后的端口号8000

嘿,我来帮你搞定这个问题!首先得明白为啥会出现这种情况:当你直接输入域名访问时,浏览器默认会用HTTP的标准端口80,但你的Django开发服务器(也就是runserver命令启动的服务)是跑在8000端口上的,两者端口不匹配,自然就打不开页面。要去掉那个烦人的:8000,有几种靠谱的办法,分场景给你说:

一、临时测试/调试用:端口转发

如果你只是临时需要对外展示或者调试,不想折腾生产环境的配置,可以用端口转发把80端口的请求转到8000:

  • Linux/macOS系统:打开终端执行这条命令(需要管理员权限):
    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000
    
    执行后,外部访问你的域名(默认走80端口)就会自动转到8000端口,直接打开页面。注意:重启机器后这条规则会失效,要是想持久化,得根据你的系统配置保存iptables规则。
  • Windows系统:以管理员身份打开命令提示符,执行:
    netsh interface portproxy add v4tov4 listenport=80 listenaddress=xxx.xxx.x.xxx connectport=8000 connectaddress=xxx.xxx.x.xxx
    
    把命令里的xxx.xxx.x.xxx换成你的静态IP就行。

二、生产环境推荐:用WSGI服务器+Nginx反向代理

Django自带的runserver只是给开发用的,性能和安全性都不适合长期对外服务。正确的生产部署方式是用WSGI服务器(比如Gunicorn、uWSGI)运行Django,再搭配Nginx做反向代理,让Nginx监听80端口,把请求转发给Django应用:

  1. 安装并启动Gunicorn
    先通过pip安装Gunicorn:
    pip install gunicorn
    
    然后用它启动你的Django项目(把your_project_name换成你实际的项目名称):
    gunicorn --bind 0.0.0.0:8000 your_project_name.wsgi
    
  2. 配置Nginx反向代理
    安装Nginx后,找到它的配置文件(通常在/etc/nginx/sites-available/目录下),新建一个配置文件,内容如下:
    server {
        listen 80;
        server_name www.somedomainname.com;
    
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    
    保存后,创建软链接到sites-enabled目录,然后重启Nginx服务:
    sudo ln -s /etc/nginx/sites-available/your_config_file /etc/nginx/sites-enabled/
    sudo systemctl restart nginx
    
  3. 检查端口开放情况
    如果是云服务器,要确保安全组里开放了80端口;如果是本地网络,路由器要做端口映射,把外部的80端口转到你的机器对应的端口。

这样配置后,你直接访问www.somedomainname.com就会和加:8000时得到完全一样的结果啦!

备注:内容来源于stack exchange,提问作者P. Roy

火山引擎 最新活动