找不到Nginx图像后备

问题描述 投票:1回答:1

我的网站有很多图像/image/test/manyfile.jpg现在我有/image/test/manyfile_large.jpg,但并非所有.jpg都有_large.jpg。

所以我的想法是使用Nginx检查manyfile_large.jpg文件,如果不存在则重写或重定向到manyfile.jpg

任何人都可以提供示例配置吗?

非常感谢! :)

nginx replace http-status-code-404 fallback
1个回答
0
投票

您可以使用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 $1_large.$2 $1.$2 =404;
}

该块将返回大变量(如果存在),然后返回常规变量(如果存在),如果两者都不存在则返回404状态。

正则表达式location块的顺序很重要,因为具有匹配正则表达式的第一个块用于处理请求。有关详细信息,请参阅this document

© www.soinside.com 2019 - 2024. All rights reserved.