我有一个通用的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等其他位置查找文件?
答案 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;
}