当前位置:首页 > 行业动态 > 正文

django 绑定域名

在Django中绑定域名需三步:1. 修改settings.py的ALLOWED_HOSTS,添加域名(如[‘example.com’]);2. 配置Web服务器(如Nginx),设置server_name为域名,并将请求代理到Django应用(如使用proxy_pass到127.0.0.1:8000);3. 域名解析到服务器IP。若需HTTPS,还需在Web服务器配置SSL证书。部署后重启Nginx服务生效。

为何需要绑定域名?

当使用 Django 开发的 Web 应用从本地测试环境迁移到线上服务器时,绑定域名是必经步骤,通过域名访问网站,不仅能提升品牌形象,还能让用户更便捷地找到服务,本文将从基础配置到生产环境实践,逐步讲解 Django 项目如何正确绑定域名。

第一步:域名解析与服务器准备

1、购买并配置域名

在域名服务商(如阿里云、酷盾安全(kdun.cn))购买域名后,进入域名管理后台,添加一条A 记录,将域名指向服务器公网 IP。

   记录类型:A
   主机记录:@ 或 www
   记录值:123.45.67.89(你的服务器IP)

2、确保服务器环境就绪

确认服务器已安装 Web 服务器(如 Nginx 或 Apache)。

检查防火墙是否开放 80(HTTP)和 443(HTTPS)端口:

     sudo ufw allow 80/tcp
     sudo ufw allow 443/tcp

第二步:配置 Django 项目

1、修改ALLOWED_HOSTS

在 Django 的settings.py 中,添加域名以允许合法请求:

   ALLOWED_HOSTS = ['yourdomain.com', 'www.yourdomain.com']

若处于测试阶段,可暂时设置为通配符(不推荐生产环境使用):

   ALLOWED_HOSTS = ['*']

2、静态文件与媒体文件处理

确保STATIC_URLMEDIA_URL 配置正确,并通过 Web 服务器代理:

   STATIC_URL = '/static/'
   STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
   MEDIA_URL = '/media/'
   MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

第三步:Nginx 反向代理配置(以 Ubuntu 为例)

1、创建 Nginx 配置文件

/etc/nginx/sites-available/ 下新建文件yourdomain.conf

   server {
       listen 80;
       server_name yourdomain.com www.yourdomain.com;
       location / {
           proxy_pass http://127.0.0.1:8000;  # 指向 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;
       }
       location /static/ {
           alias /path/to/your/staticfiles/;
       }
       location /media/ {
           alias /path/to/your/media/;
       }
   }

2、启用配置并重启 Nginx

   sudo ln -s /etc/nginx/sites-available/yourdomain.conf /etc/nginx/sites-enabled/
   sudo nginx -t  # 检查语法
   sudo systemctl restart nginx

第四步:HTTPS 强化安全性

1、申请 SSL 证书

使用 Certbot 自动获取 Let’s Encrypt 免费证书:

   sudo apt install certbot python3-certbot-nginx
   sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

2、自动续期配置

证书默认有效期为 90 天,添加定时任务:

   sudo crontab -e
   # 添加以下行
   0 0 */60 * * certbot renew --quiet

常见问题排查

域名无法访问

检查 DNS 解析是否生效(使用dig yourdomain.com 或在线工具)。

Nginx 报 502 错误

确认 Django 服务是否运行(gunicornuWSGI 需绑定到正确端口)。

静态文件加载失败

确保STATIC_ROOT 已通过collectstatic 生成,且 Nginx 路径权限正确。

绑定域名是 Django 项目上线的核心步骤之一,通过合理配置 DNS、Web 服务器和 Django 自身参数,结合 HTTPS 加密,不仅能提升用户体验,还能增强搜索引擎的信任度,定期检查服务器日志与证书状态,可确保服务长期稳定运行。

引用说明

1、[Nginx 官方文档](https://nginx.org/en/docs/)

2、[Django 部署指南](https://docs.djangoproject.com/en/4.2/howto/deployment/)

3、[Let’s Encrypt 证书申请](https://certbot.eff.org/)

0