nginx 1.1.19 版的缓存模块不再考虑Vary
header。这意味着即使 header 中指定的某个字段的内容Vary
发生了变化,nginx 仍会处理相同的请求。
就我而言,我只关心标题Accept-Language
,其他的都已经处理好了。
如何让 nginx 缓存所有内容除了响应的Vary
标题包含Accept-Language
?
我想我应该有类似的东西
location / {
proxy_cache cache;
proxy_cache_valid 10m;
proxy_cache_valid 404 1m;
if ($some_header ~ "Accept-Language") { # WHAT IS THE HEADER TO USE?
set $contains_accept_language # HOW SHOULD THIS VARIABLE BE SET?
}
proxy_no_cache $contains_accept_language
proxy_http_version 1.1;
proxy_pass http://localhost:8001;
}
但我不知道“Vary
从后端接收的标题”的变量名是什么。
答案1
作为相关票有了它,您有几种选择:
- 将 $http_accept_language 添加到缓存键。
- proxy_no_cache $upstream_http_vary;