以这个 Nginx 位置配置为例:
location ~* \.(gif|jpg|jpeg|swf|css)$ {
add_header Cache-Control "max-age=259200, public";
}
location ^~ /abc/ {
try_files $uri /abc/generic.png;
}
对于请求 /abc/x.jpg,它将匹配第二个位置,并且响应将没有 Cache-Control 标头。如何将 Cache-Control 标头也应用于 /abc/x.jpg?
像这样的东西会起作用,但它有点重复。
location ~* \.(gif|jpg|jpeg|swf|css)$ {
add_header Cache-Control "max-age=259200, public";
}
location ^~ /abc/ {
try_files $uri /abc/generic.png;
location ~* \.(gif|jpg|jpeg|swf|css)$ {
add_header Cache-Control "max-age=259200, public";
}
}
你可以使用这样的东西。
在 Nginx 中,优先级是这样的,首先 = (equal) ,然后 ^~ (no regular expression) ,然后 ~ (区分大小写),然后 ~* (不区分大小写),然后没有。由于代码更改为 /abc,它的优先级降到了底部,因此当找到以给定图像扩展名结尾的 URI 时,首先调用第一个位置块。如果找不到,并且 URI 包含 /abc 块,例如 /abc/file/file.pdf、/abc/file.pdf,则调用另一个位置块。