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

如何在Django生产服务器中移除URL中的端口号?

移除Django生产环境URL中的端口号

以下是几种可行的解决方法,按生产环境实用性排序:

1. 用Nginx做反向代理(推荐方案)

这是生产环境的标准部署方式,Nginx作为前端服务器监听80(HTTP)或443(HTTPS)端口,将请求转发到后台运行在8586端口的Django服务(如gunicorn/uwsgi)。

操作步骤:

  • 安装Nginx:根据服务器系统执行对应命令,比如Ubuntu/Debian:sudo apt install nginx,CentOS/RHEL:sudo yum install nginx
  • 创建站点配置文件:在/etc/nginx/sites-available/目录下新建your_domain.conf,写入以下内容(替换your_domain_name为你的实际域名):
server {
    listen 80;
    server_name your_domain_name;

    location / {
        proxy_pass http://127.0.0.1:8586;
        # 传递必要的请求头,确保Django能正确识别请求来源
        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目录:sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
  • 验证配置并重启Nginx:sudo nginx -t,如果输出test is successful,执行sudo systemctl restart nginx
  • 开放80端口:确保服务器防火墙/安全组允许80端口的入站流量

2. 让Django服务直接监听80端口(不推荐)

直接修改Django应用服务器的监听端口为80,这样访问时无需附加端口,但存在安全和权限问题:

  • 非root用户无法直接监听1024以下端口,要么用root启动服务(风险高),要么给服务授权:比如给gunicorn添加端口权限:sudo setcap 'cap_net_bind_service=+ep' /usr/bin/gunicorn
  • 启动示例:gunicorn --bind 0.0.0.0:80 your_project.wsgi:application
  • 此方式缺乏反向代理的负载均衡、静态文件处理等能力,不适合生产环境长期使用

3. 配置防火墙端口转发

通过防火墙将80端口的流量转发到8586端口,无需额外安装反向代理服务:

  • 使用iptables配置转发:sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8586
  • 保存规则:Ubuntu/Debian执行sudo iptables-save > /etc/iptables/rules.v4,CentOS/RHEL执行sudo service iptables save
  • 开放80端口的入站流量

额外注意事项

  • 确保Django配置文件中的ALLOWED_HOSTS包含你的域名,例如:ALLOWED_HOSTS = ['your_domain_name']
  • 建议配置HTTPS:申请SSL证书(如Let's Encrypt),修改Nginx配置监听443端口,并将80端口的请求重定向到HTTPS
  • 关闭8586端口的外部访问:在防火墙中仅允许本地IP访问8586,避免直接暴露后台服务

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:48:17