一个位置 location ~* \.(png|jpe?g|gif)$ 是否会覆盖位置 ~* 规则?

一个位置 location ~* \.(png|jpe?g|gif)$ 是否会覆盖位置 ~* 规则?

我无法访问 nginx.config 文件,但我需要同时提供 webp 图像并增加缓存时间。我们制定了此规则,并且运行良好:

location ~* \.(png|jpe?g|gif)$ {
    add_header Vary Accept;
    default_type image/webp;
    try_files $uri$webp $uri =404;
}

但添加此规则后,webp 图像将停止提供:

location ~* \.(png|jpe?g|gif)$ {
    expires 365d;
}

是否可以合并这两条规则?我不想合并它们,因为更新此文​​件的人需要一段时间才能做出响应,从而导致网站崩溃。

我的问题是,这会起作用吗?

location ~* \.(png|jpe?g|gif)$ {
    expires 365d;
    add_header Vary Accept;
    default_type image/webp;
    try_files $uri$webp $uri =404;
}

答案1

location对于任何给定的字符串或正则表达式,一个块中只能有一个server。如果有两个相同的,则只使用第一个。后续的将永远不会匹配并被忽略。但 nginx 不会对此发出警告。

那么你必须将所需的指令合并到一个中location

相关内容