nginx-如何使用具有2个或更多根的try_files

前端之家收集整理的这篇文章主要介绍了nginx-如何使用具有2个或更多根的try_files 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我一直望而却步,发现没有这样的实现,并且想知道我尝试的事情是否可能.我有3条相对路径可提供静态内容

Path1: /usr/local/www/style1/static/...
Path2: /usr/local/www/style2/static/...
Path3: /usr/local/www/style3/static/...

这3个不同的根本身是静态的,但是/ static到下的内容只是半静态的(可能有所不同,具体取决于要提供的确切文件,并且可能存在于一个路径中,而不是另一个路径中).例如

/static/css/custom.css
/static/css/form/button.css
/static/css/form/images/buttondisabled.png
/static/images/ui/buttons/add_item.png
/static/images/ui/menu/help.png

以下是我想做的.基本上是这样,如果请求“ / static”内容,我想检查与path1相关的相对路径,如果在那里找不到,则检查与path2相关的相对路径,如果没有找到,则检查与path3相关的相对路径.这似乎很简单,但是我还没有找到任何示例概述该操作的方式.我可以将3个不同的根设置为变量吗:

path1root /usr/local/www/style1;
path2root /usr/local/www/style2;
path3root /usr/local/www/style3;

location /static
{
    try_files path1root/$uri path2root/$uri path3root/$uri (=404);
}

或可以按照以下方式进行操作,因为仅/ static内容需要它:

location /static
{
    path1root /usr/local/www/style1;
    path2root /usr/local/www/style2;
    path3root /usr/local/www/style3;

    try_files path1root/$uri path2root/$uri path3root/$uri (=404);
}

还是可以完全尝试做我想做的事情?如果我不能使用3个根来做到这一点,那么可以仅用2个根来完成,而无需将其中一个定义为整体拱形基根.如果有可能做到这一点,并且避免使用正则表达式,那会更好-但是,如果需要这样做,则需要这样做.

最佳答案
您可以使用公共根目录,并尝试使用try_files语句中的三个目录:

location /static {
    root /usr/local/www;
    try_files /style1$uri /style2$uri /style3$uri =404;
}
原文链接:https://www.f2er.com/nginx/532319.html

猜你在找的Nginx相关文章