我知道如何按 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 仅用于(并且仅用于)单个虚拟主机。这不是很低效吗?我遗漏了什么吗?
3
最佳答案
1
不用担心地图太多。
由于变量仅在使用时才被评估,因此即使仅仅声明大量“
map
”变量也不会给请求处理增加任何额外成本。
0
|
expires
根据我的经验,Nginx 不会对映射进行任何操作,除非需要 $var。因此,在处理请求时,在需要值的地方,$website2
将与其映射一起进行评估。–
map
答案的最后一部分。–
–
|