我想从不同的两个 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/;
}
}
我应该如何从两个目录提供两个静态文件。
您可以使用
try_files
检查两个路径,但需要将 root
设置为公共父目录。
例如:
location /static/ {
root /webapps/project;
try_files /pages$uri /admin$uri =404;
}