nginx 动态启用 fastcgi_cache?

nginx 动态启用 fastcgi_cache?

我尝试找到一种智能的方式来按需启用 fasctcgi_cache,它的默认方式是默认启用,除非你这样做

fastcgi_cache_bypass true;
fastcgi_no_cache  true;

我试图达到相反的效果。

我现在有的是:

fastcgi_cache_bypass $upstream_http_no_cache;
fastcgi_no_cache  $upstream_http_no_cache;

我发送了我所有的网址的标题no_cache: 1;

在我需要缓存的 URL 中,我发送了标头,no_cache: 0; 因此缓存不会被禁用。

它能工作,但我并不喜欢它。我不能在配置中使用“if”,因为“如果是邪恶的“ 事物

是否有某种方法可以默认关闭它并在需要时触发它?

答案1

因此,您不想默认缓存,而是要缓存一些标头。您可以使用map指令来实现:

map $upstream_http_no_cache $no_cache {
    default $upstream_http_no_cache;
    "" "1";
}

...

fastcgi_cache_bypass $no_cache;
fastcgi_no_cache  $no_cache;

变量$no_cache默认为$upstream_http_no_cache(即来自上游的 NO-CACHE 标头),但空值(即没有设置标头)映射到1

相关内容