基于cookie值的Nginx缓存页面

基于cookie值的Nginx缓存页面,nginx,cache-control,Nginx,Cache Control,我对Nginx非常陌生,我试图了解在Nginx的世界里这样的事情是否可能发生。我们正在考虑在现有的web应用程序上设置NGINX静态页面缓存,但是我们希望基于某个cookie值缓存页面 例如: 如果传入的请求有一个名为XYZ的cookie,其值为“123”,那么我们只想将该页面缓存3小时。如果不是,我们不想缓存它 NGINX是否可以实现类似的功能?如果是,有人能帮忙吗 提前谢谢。是的,这是可能的。它的工作原理与您想象的略有不同: 首先设置缓存,例如使用proxy\u cache-指令 然后使用m

我对Nginx非常陌生,我试图了解在Nginx的世界里这样的事情是否可能发生。我们正在考虑在现有的web应用程序上设置NGINX静态页面缓存,但是我们希望基于某个cookie值缓存页面

例如:

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

NGINX是否可以实现类似的功能?如果是,有人能帮忙吗


提前谢谢。

是的,这是可能的。它的工作原理与您想象的略有不同:

首先设置缓存,例如使用
proxy\u cache
-指令

然后使用
map
映射cookie值:

map $cookie_XYZ $bypass {
  '123' 0;
  'default' true;
}
然后可以使用此值绕过缓存(对于没有cookie的请求):

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