如果响应包含Vary Accept-Language,则使nginx避免caching

nginx版本1.1.19的caching模块不考虑Vary报头。 这意味着即使Vary头中指定的某个字段的内容发生了Vary ,nginx也会提供相同的请求。

在我的情况下,我只关心Accept-Language标题,所有其他人已经照顾。

我怎样才能使nginxcaching一切, 有一个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头”的variables名称是什么。

由于相关机票有它,你有几个select:

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