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

Django项目可通过Droplet IP访问但自定义域名无法访问求助

排查Django+Gunicorn+Nginx部署域名无法访问问题

1. 匹配Gunicorn运行模式与Nginx配置

你之前启动Gunicorn用的是TCP端口(-b 0.0.0.0:8000),但Nginx配置指向的是Unix Socket(http://unix:/run/gunicorn.sock),两者不兼容。需修改Gunicorn启动命令为Socket模式:

gunicorn -w 2 -b unix:/run/gunicorn.sock --chdir /home/USER_NAME/projectdir/test_project test_project.wsgi

如果用systemd管理Gunicorn,同步修改service文件中的ExecStart参数,确保服务始终以Socket模式启动。

2. 检查Unix Socket权限

Nginx默认以www-data用户运行,需确保/run/gunicorn.sock的权限允许Nginx读写:

# 查看Socket当前权限
ls -l /run/gunicorn.sock
# 方法1:启动Gunicorn时指定用户组(推荐)
gunicorn -w 2 -b unix:/run/gunicorn.sock --user www-data --group www-data --chdir /home/USER_NAME/projectdir/test_project test_project.wsgi
# 方法2:临时调整Socket权限(重启Gunicorn后会重置)
chmod 777 /run/gunicorn.sock

3. 验证Nginx配置正确性

检查配置语法并重启服务:

# 检测配置语法错误
nginx -t
# 重启Nginx生效配置
systemctl restart nginx

若提示错误,根据输出修正配置(如路径拼写、server_name是否替换为实际域名/IP)。

4. 检查防火墙规则

  • DigitalOcean Droplet防火墙:确认已开启HTTP (80)端口的入站规则,允许所有来源访问。
  • 系统防火墙(如ufw):检查并开放80端口:
    ufw status
    # 未开放则添加规则
    ufw allow 80/tcp
    ufw reload
    

5. 确认域名解析正确性

在本地终端执行命令,验证域名A记录指向你的Droplet IP:

dig DOMAIN_NAME +short
dig www.DOMAIN_NAME +short

输出需与Droplet公网IP完全一致。

6. 通过日志定位错误

查看Nginx和Gunicorn日志获取具体错误信息:

# Nginx错误日志
tail -f /var/log/nginx/error.log
# Nginx访问日志
tail -f /var/log/nginx/access.log
# Gunicorn日志(systemd管理时)
journalctl -u gunicorn.service -f

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 12:05:19