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

DigitalOcean部署Django等服务后多URL访问异常求助

问题排查与修复方案

针对你遇到的不同访问异常,逐个分析原因并给出修复步骤:

1. 直接访问<IP>(80端口)返回404

这是因为Nginx配置中没有匹配裸IP请求的规则,或默认server块未配置反向代理到Django服务。

  • 修复步骤:
    • 打开Nginx站点配置文件(通常位于/etc/nginx/sites-available/目录下)
    • 给裸IP添加对应server块,或修改默认server块(listen 80 default_server;)配置反向代理:
      server {
          listen 80 default_server;
          server_name <你的服务器IP>;
      
          location / {
              proxy_pass http://127.0.0.1:8000; # 对应Django/WSGI服务监听的端口或socket
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }
      
    • 重启Nginx生效:sudo systemctl restart nginx

2. https://DomainName能显示HTML但静态文件加载失败

核心问题是Nginx未正确处理静态文件请求,或Django静态文件未完成收集配置。

  • 先确认Django配置:
    • 确保settings.py中已设置:
      STATIC_ROOT = '/var/www/你的项目名/static' # 自定义静态文件存放目录
      STATIC_URL = '/static/'
      
    • 运行命令收集静态文件:python manage.py collectstatic
  • 再修改Nginx对应域名的server块,添加静态文件处理规则:
    server {
        listen 443 ssl;
        server_name DomainName;
    
        # 已有的SSL证书配置保持不变
        
        location /static/ {
            root /var/www/你的项目名; # 指向STATIC_ROOT的上级目录
            expires 30d; # 开启静态文件缓存
        }
    
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
  • 确保Nginx有静态文件目录的读取权限:sudo chown -R www-data:www-data /var/www/你的项目名/static
  • 重启Nginx和Django服务

3. https://www.DomainName返回404

这是因为Nginx未配置www子域名的server块,或现有server块的server_name未包含www.DomainName。

  • 修复方案二选一:
    方案1:将www子域名加入现有主域名的server块:
    server {
        listen 443 ssl;
        server_name DomainName www.DomainName; # 同时匹配主域名和www子域名
    
        # 其他SSL、反向代理、静态文件配置保持不变
    }
    
    方案2:配置www子域名重定向到主域名(更推荐,避免重复内容):
    server {
        listen 443 ssl;
        server_name www.DomainName;
    
        # 配置对应www域名的SSL证书
        return 301 https://DomainName$request_uri;
    }
    
  • 重启Nginx生效

额外检查项

  • 确认gunicorn(或你使用的WSGI服务器)正常运行,监听地址/端口与Nginx的proxy_pass配置一致
  • 检查防火墙规则,确保80、443端口开放:sudo ufw allow 80/tcp && sudo ufw allow 443/tcp
  • 若用Certbot申请SSL证书,需确认其自动生成的配置包含了你需要的域名(包括www)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:55:21