如果响应包含 Vary Accept-Language,则让 nginx 避免缓存

如果响应包含 Vary Accept-Language,则让 nginx 避免缓存

nginx 1.1.19 版的缓存模块不再考虑Varyheader。这意味着即使 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

作为相关有了它,您有几种选择:

  1. 将 $http_accept_language 添加到缓存键。
  2. proxy_no_cache $upstream_http_vary;

相关内容