通过自定义响应标头绕过Nginx缓存

时间:2017-04-05 20:57:31

标签: caching nginx

我想通过使用自定义标头:“Do-Cache”从我的脚本实现自定义nginx缓存控制方法。 我在nginx的http块中使用:

map $sent_http_do_cache $nocache {
        public 0;
        default 1;
}

在nginx的服务器块中:

fastcgi_cache_bypass $nocache;
fastcgi_no_cache $nocache;

因此,对于Do-Cache: public,nginx应该缓存响应。否则不是。

但是这种配置不起作用。通过调入日志,$sent_http_do_cache$nocache的值是正确的,直到它们被用在nginx的服务器块中。如果在服务器块(fastcgi_cache_bypass $nocache或简单set $a $nocache)中使用它们,$nocache变量的值为“1”,$sent_http_do_cache - “ - ”。< / p>

是否有其他方法可以根据自定义标头管理nginx的缓存?

1 个答案:

答案 0 :(得分:0)

基于响应头的缓存无法完成,因为它意味着Nginx必须将请求代理回后端并检查其响应,从而破坏了代理缓存的目的。