首页 > 解决方案 > nginx 同时提供 django 静态文件和反应静态文件

问题描述

我最近试图阻止 nginx 连接我基于 django 的后端和基于反应的前端。这是我的 nginx 配置文件:

upstream api {
server backend:8000;
}

server {
    listen 8080;

    location /api/ {
        uwsgi_pass backend:8000;
        include /etc/nginx/uwsgi_params;
    }

    location /admin/ {
        uwsgi_pass backend:8000;
        include /etc/nginx/uwsgi_params;
    }


    # ignore cache frontend
    location ~* (service-worker\.js)$ {    
        add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';    
        expires off;    
        proxy_no_cache 1;
    }

    location / {
      root /var/www/frontend;
      try_files $uri /index.html;
    }

    location /static {
        alias /vol/static;
    }
    
    location /static/rest_framework/ {
        alias /vol/static;
    }
    
}

但是,问题是我的 manage.py collect static 会将 django 静态文件放入其中/vol/static,但是,我的 react 构建在其中,/var/www/frontend/因此当我尝试访问默认 / url 时,它返回一个空白页面。但是,如果我删除

location /static {
        alias /vol/static;
    }

    location /static/rest_framework/ {
        alias /vol/static;
    }

它将在没有任何 CSS 的情况下为我的 django 管理页面提供服务。如何在不将两个静态文件放在同一目录中的情况下轻松解决此问题?

标签: reactjsdjangonginx

解决方案


推荐阅读