根据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
块的外面。