Nginx缓存页面基于cookie值

时间:2016-11-02 03:42:44

标签: nginx cache-control

我是Nginx的新手,并试图了解NGINX世界中是否有类似的东西是可能的。我们正在考虑在现有的Web应用程序上设置NGINX静态页面缓存,但是我们希望根据某个cookie值来缓存页面。

例如:

如果传入的请求有一个名为XYZ的cookie,值为" 123",那么我们只想缓存该页面,只需说3个小时。如果不是,我们不想缓存它。

NGINX可以实现这样的目标吗?如果是的话,有人可以帮忙吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。它与你想象的有点不同:

首先设置缓存,例如使用proxy_cache - 指令。

然后使用map

映射Cookie值
map $cookie_XYZ $bypass {
  '123' 0;
  'default' true;
}

然后您可以使用此值来绕过缓存(对于没有cookie的请求):

location /somelocation {
  proxy_cache_bypass $bypass;
  ...
}