Nginx绕过特定RESTful端点上的缓存

时间:2016-06-02 15:59:34

标签: caching nginx

我有以下类型的端点。

/ V1 /端点/ {ID} /高速缓存

/ V1 /端点/ {ID} / bypasscache

我想绕过第二个缓存,因为它需要是最新的,同时将我的默认缓存保留在不经常更新的第一个URL上。

是否可以进行此设置,但具有变量ID?

if ($request_uri ~* "/v1/endpoint/18/bypasscache" ) {
  set $no_cache 1;
}

fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;

1 个答案:

答案 0 :(得分:1)

尝试(对于1或2个字符宽的数字组合,大写和小写字母的变量ID):

if ($request_uri ~* "/v1/endpoint/[0-9a-zA-Z]{1,2}/bypasscache" ) {
  set $no_cache 1;
}

fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;

未经测试,因为我目前无法启动备用网络服务; - )

其他提示可在nginx location regex - character class and range of matches

的答案中找到

还有的提示在正则表达式中包含花括号时忘记引用该字符串,因为这些可能会干扰块语法花括号 - 这里是if的块。