Nginx try_files忽略路径

时间:2015-11-03 16:31:24

标签: nginx

我有一个位置设置图像,如:

location ~* ^/images/.+\.(jpg|jpeg|gif|png)$ {
   try_files /disk/$uri /images?uri=$uri;
}

$uri包含images名称。当我访问/images/one/two/three/item.jpg时,我想从try_files中排除images。因此,访问它实际上应该尝试/disk/one/two/three/item.jpg

知道如何排除第一段吗?

1 个答案:

答案 0 :(得分:1)

首先,我将使用前缀位置包装正则表达式位置。这会隔离正则表达式位置并防止其与其他人发生冲突。结果,您的配置将更加平滑。

如果此目录中只有图像,那么在/ images /之后捕获所有内容会更简单,而不用担心文件扩展名。然后,您可以自由地进行区分大小写的匹配,这会更快一些。

location /images/ {
    location ~ ^/images/(?<img_path>.+) {
        try_files /disk/$img_path /images?uri=$img_path;
    }
}