Как использовать файлы try с 2 или более корнями


Я посмотрел привет и низко и не нашел такой реализации, и мне интересно, возможно ли то, что я пытаюсь. У меня есть 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 корнями, не определяя один из них как общий сводчатый базовый корень. Если это возможно сделать и держаться подальше от регулярных выражений, это было бы лучше-но если это необходимо, то это необходимо.
1 3

1 ответ:

Вы можете использовать общий корень и попробовать три каталога в операторе try_files:

location /static {
    root /usr/local/www;
    try_files /style1$uri /style2$uri /style3$uri =404;
}