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

Docker化Django+Postgres+Nginx项目Nginx报index.html不存在错误如何解决

问题根因

你的Nginx配置仅配置了/admin、/api以及两个静态资源子路径的匹配规则,未覆盖根路径/的请求。当你访问0.0.0.0:8000时,请求没有命中任何自定义的location规则,Nginx会fallback到默认站点逻辑,到默认站点根目录/etc/nginx/html下查找index.html文件,因此触发了找不到文件的报错。

修复步骤

  1. 修改Nginx配置,补充根路径转发规则,同时可以合并冗余的静态资源匹配规则,修改后的nginx.conf参考如下:
upstream django_backend {
    server django_app:8000;
}

server {
    listen 80;
    server_name localhost;

    # 所有非静态资源请求转发到Django
    location / {
        proxy_pass http://django_backend;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    # 统一匹配所有静态资源请求,无需单独配置每个应用的静态路径
    location /static/ {
        alias /usr/src/app/django_files/static/;
    }
}

如果你确实需要限制Nginx仅转发/admin和/api路径的请求,只需在原有配置基础上额外添加根路径/的匹配规则即可。

  1. 还原端口配置(可选,避免配置混淆):

    • 将docker-compose.yml中Nginx的端口映射改回- 8000:80
    • 保持nginx.conf中listen 80;的配置不变,无需改为8000
  2. 重启服务生效:
    执行以下命令重新构建启动Nginx容器:

docker-compose up -d --build nginx

补充检查项

确保Django项目的根路由urls.py中已经配置了根路径/对应的视图处理逻辑,配置完成后即可正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:39:01