找不到 Nginx 图像回退
Nginx image not found fallback
我的网站有很多图片 /image/test/manyfile.jpg 现在我有 /image/test/manyfile_large.jpg,但不是所有的 .jpg 都有 _large.jpg.
所以我的想法是使用Nginx检查manyfile_large.jpg文件,如果不存在则重写或重定向到manyfile.jpg
任何人都可以给出示例配置吗?
非常感谢! :)
您可以使用try_files
来测试一个或多个文件是否存在。有关详细信息,请参阅 this document。
首先您需要捕获 URI 的组成部分,以便您可以构造两个文件名变体来尝试。
我不确定您的问题和评论中的示例是 URI 还是路径名。在以下示例中,URI 为 /image/foo/bar.jpg
,相应的文件位于 /path/to/image/foo/bar.jpg
和(可选)/path/to/image/foo/bar_large.jpg
.
例如:
location ~ ^(/image/.+)\.(jpg|png|svg)$ {
root /path/to;
try_files _large. . =404;
}
该块将 return 大变体(如果存在),然后是常规变体(如果存在),然后是 404 状态(如果两者都不存在)。
正则表达式 location
块的顺序很重要,因为具有匹配正则表达式的第一个块用于处理请求。有关详细信息,请参阅 this document。
我的网站有很多图片 /image/test/manyfile.jpg 现在我有 /image/test/manyfile_large.jpg,但不是所有的 .jpg 都有 _large.jpg.
所以我的想法是使用Nginx检查manyfile_large.jpg文件,如果不存在则重写或重定向到manyfile.jpg
任何人都可以给出示例配置吗?
非常感谢! :)
您可以使用try_files
来测试一个或多个文件是否存在。有关详细信息,请参阅 this document。
首先您需要捕获 URI 的组成部分,以便您可以构造两个文件名变体来尝试。
我不确定您的问题和评论中的示例是 URI 还是路径名。在以下示例中,URI 为 /image/foo/bar.jpg
,相应的文件位于 /path/to/image/foo/bar.jpg
和(可选)/path/to/image/foo/bar_large.jpg
.
例如:
location ~ ^(/image/.+)\.(jpg|png|svg)$ {
root /path/to;
try_files _large. . =404;
}
该块将 return 大变体(如果存在),然后是常规变体(如果存在),然后是 404 状态(如果两者都不存在)。
正则表达式 location
块的顺序很重要,因为具有匹配正则表达式的第一个块用于处理请求。有关详细信息,请参阅 this document。