如何在 NGINX 中从不同位置提供静态文件

问题描述 投票:0回答:1

我想从不同的两个 Django 应用程序提供静态文件。一个静态文件用于管理应用程序,其他静态文件用于页面应用程序。 注意:我知道collectstatic 命令。我想知道的是,是否有一种方法可以从 /static/ 位置下的两个不同目录提供静态文件。如果一个位置失败,请检查另一位置。

静态文件的位置:

/webapps/project/admin/static 和 /webapps/project/pages/static

location /static/ {
    alias /webapps/project/admin/static/;
    alias /webapps/project/pages/static/;
}

这会引发重复别名指令的错误

这就是我想要的。要检查 @static 中的文件,如果找不到文件,请检查 @static2 块。

server {
    server_name x.x.x.x;

    client_max_body_size 8M;

    access_log /webapps/logs/project/nginx-access.log;
    error_log /webapps/logs/project/nginx-error.log;

    location /static/ {
        try_files $uri @static @static2;
    }

    location @static {
        root /webapps/project/pages/;
    }

    location @static2 {
        root /webapps/project/admin/;
    }

}

我应该如何从两个目录提供两个静态文件。

django nginx static-files
1个回答
0
投票

您可以使用

try_files
检查两个路径,但需要将
root
设置为公共父目录。

例如:

location /static/ {
    root /webapps/project;
    try_files /pages$uri /admin$uri =404;
}
© www.soinside.com 2019 - 2024. All rights reserved.