我知道如何按 mime 类型分配 NGINX Expires 标头(此处回答)。但是,不清楚如何使用此方法为每个虚拟主机分配不同的 Expires 标头。例如,我可能在上下文中有以下内容http
。因为map
指令需要进入上下文http
,所以映射和$expires
将全局应用于所有虚拟主机。
map $sent_http_content_type $expires {
~text/ -1;
default max;
}
然后我可以添加$expires
到http
(全局应用)server
或location
。
expires $expires;
如果我现在想为另一个网站设置不同的过期时间,该怎么办?我需要创建一个新的地图$website2
。
map $sent_http_content_type $website2 {
~application/ -1;
~text/ -1;
default max;
}
...然后将其专门分配给我想要使用它的虚拟主机。
server {
server_name mydomain.com;
...
expires $website2;
现在这确实有效,但现在所有虚拟主机的所有请求都将映射$sent_http_content_type
到多个变量,即使每个 $var 仅用于(并且仅用于)单个虚拟主机。这不是很低效吗?我遗漏了什么吗?
不用担心地图太多。
https://nginx.org/en/docs/http/ngx_http_map_module.html#map