【问题标题】:How to use try_files with 2 or more roots如何使用具有 2 个或更多根的 try_files
【发布时间】:2017-02-11 17:18:36
【问题描述】:

我看了又好又低,发现没有这样的实现,我想知道我正在尝试的是否可能。我有 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

以下是我想做的。基本上,如果请求“/静态”内容,我想检查与 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 个根来完成而不将其中一个定义为整体拱形基根。如果可以做到这一点并远离正则表达式会更好——但如果需要,那就需要了。

【问题讨论】:

    标签: nginx static-files nginx-location


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      相关资源
      最近更新 更多