使用nginx指令在另一个位置查找jpg

时间:2018-05-26 00:37:42

标签: nginx nginx-location

我有一个通用的nginx规则来从他们的URI提供jpgs。

因此,如果URI是“http://example.com/images/1.jpg”,它将在网站/ images / 1.jpg的表单根目录下提供

如果在原始路径上找不到,我想尝试从备用路径提供图像。我该如何写第二个位置?

这是我得到的:

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|ico)$ {
            try_files $uri $uri/ @fallback;
            access_log      off;
            expires         max;
            log_not_found   off;
    }

如何编写回退以在/ home / user / anotherfolder等其他位置查找文件?

1 个答案:

答案 0 :(得分:0)

您可以在正则表达式location中使用命名捕获来保存文件名以供日后使用。您可以级联命名位置,以尝试不同的根:

location ~* ^/images(?<filename>/.+\.jpg)$ {
    try_files $uri @other;
}
location @other {
    root /path/to/alternate;
    try_files $filename @fallback;
}

如果有合适的公共父目录,您可以在单个位置块中实现相同的功能。

location ~* ^/images(?<filename>/.+\.jpg)$ {
    root /path/to/ancestor;
    try_files /dir/$uri /other/dir/$filename @fallback;
}