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

Docker环境下Django+Nginx静态文件访问配置及连接异常排查

问题排查步骤

1. 容器网络连通性验证

  • 进入Nginx容器,执行命令测试与Django容器的连通性:curl http://<django-service-name>:<django-port>/admin(替换成你docker-compose里Django服务的名称和端口,比如curl http://django:8000/admin)。如果请求失败,说明容器间网络不通:
    • 检查docker-compose.yml中两个服务是否属于同一个自定义网络(默认的bridge网络也可,但自定义网络更稳定);
    • 确认Django服务的expose或ports配置是否正确暴露了服务端口(容器间通信不需要映射到宿主机,只要容器内端口监听0.0.0.0)。

2. 静态文件配置核对

  • 检查Django的settings.py:
    • 确认STATIC_ROOT设置了静态文件收集路径(比如STATIC_ROOT = '/usr/src/app/staticfiles');
    • 确认STATIC_URL配置正确(比如STATIC_URL = '/static/');
    • 确保Django容器启动时执行了collectstatic命令,可在docker-compose的Django服务中添加:
      command: sh -c "python manage.py collectstatic --noinput && python manage.py runserver 0.0.0.0:8000"
      
  • 检查docker-compose的卷挂载配置:
    • 需将Django的静态文件目录挂载到Nginx容器的对应目录,示例:
      volumes:
        - static_volume:/usr/src/app/staticfiles  # Django侧
      nginx:
        volumes:
          - static_volume:/usr/share/nginx/html/static  # Nginx侧
      
  • 检查Nginx配置文件:
    • 静态文件的location块需指向挂载路径:
      location /static/ {
          root /usr/share/nginx/html;
          expires 30d;
      }
      
    • 反向代理Django的location块需正确指向服务地址:
      location / {
          proxy_pass http://<django-service-name>:<django-port>;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
      }
      

3. 文件权限排查

  • 进入Nginx容器,执行ls -l /usr/share/nginx/html/static,确认静态文件对Nginx运行用户(通常是www-data)有可读权限;
  • 若权限不足,可在Django容器启动时添加权限设置命令:chmod -R 755 /usr/src/app/staticfiles;
  • 确认Django容器运行用户有STATIC_ROOT目录的写入权限,避免collectstatic执行失败。

4. 端口与访问路径检查

  • 检查docker-compose中Nginx服务的端口映射,确保宿主机端口正确映射(比如ports: - "80:80"),若宿主机80端口被占用,需更换端口(如8080:80),访问时对应使用http://127.0.0.1:8080/kurai/login;
  • 核对Django的URL配置,确认/kurai/login路径在路由中存在,且Nginx未对路径进行错误截断(proxy_pass后不要额外添加路径,除非Django配置了子路径服务)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:23:22