理解 proxy_cache_bypass $http_cache_control

理解 proxy_cache_bypass $http_cache_control

根据Nginx 的文档proxy_cache_bypass

定义不从缓存中获取响应的条件。如果字符串参数中至少一个值不为空且不等于“0”,则不会从缓存中获取响应:

我想要让带有 header 的请求Cache-Control: no-cache绕过 Nginx 缓存并转发到上游服务。我应该使用以下配置吗?

proxy_cache_bypass $http_cache_control;

Cache-Control我之所以问这个问题,是因为似乎只要具有非零值,Nginx 就会绕过缓存,而不检查其内容是否为no-cache。如果不是,那么实现我的目标的最佳方法是什么?

答案1

你是对的。你应该map使用选择正确的值控制缓存。

例如:

map $http_cache_control $cache_bypass {
    no-cache   1;
}

proxy_cache_bypass $cache_bypass;

注意,map块必须放置在server块的外面。

相关内容