我想让 nginx 通过检查该路径/文件是否存在于几个单独的目录中来处理对特定目录的请求。例如,如果我的目录根目录具有以下内容:
images/siteA/foo.jpg
images/siteB/b/bar.jpg
images/siteC/example.jpg
我想http://example.com/images/foo.jpg
返回文件foo.jpg
,http://example.com/b/bar.jpg
返回文件bar.jpg
等等。
我尝试了以下方法,但它只是被锁定在重定向循环中(我不希望它重定向,但实际上将文件提供给该 URL):
location /images/ {
try_files /siteA/images/
/siteB/images/
/siteC/images/ =404;
}
我也尝试过使用捕获组location ~/images/(.*)/
,例如添加$1
到 URL 的末尾。我对文档有点困惑,不确定如何使用 nginx 完成此操作。
您将需要使用正则表达式
location
来捕获 URI 后面的部分/images/
。然后使用try_files
每个站点前缀来测试一系列 URI。例如:
root
您可以从周围的块中继承 的值,在这种情况下try_files
适当地调整参数。作为已接受答案的替代方案,您可以使用命名位置(
@my_path
例如)回退到其他位置,例如: