Nginx 根据 cookie 值缓存页面
Nginx cache pages based on cookie value
我是 Nginx 的新手,正在尝试了解在 NGINX 世界中是否有可能发生这样的事情。我们正在考虑在我们现有的 Web 应用程序上设置 NGINX 静态页面缓存,但是我们希望根据特定的 cookie 值来缓存页面。
例如:
如果传入请求有一个名为 XYZ 且值为“123”的 cookie,那么我们只想将该页面缓存 3 小时。如果不是,我们不想缓存它。
NGINX 可以实现这样的功能吗?如果是这样,有人可以帮忙吗?
提前致谢。
是的,这是可能的。它的工作原理与您想象的有点不同:
首先设置缓存,例如使用 proxy_cache
指令。
然后将 cookie 值映射为 map
:
map $cookie_XYZ $bypass {
'123' 0;
'default' true;
}
然后你可以使用这个值来绕过缓存(对于没有cookie的请求):
location /somelocation {
proxy_cache_bypass $bypass;
...
}
我是 Nginx 的新手,正在尝试了解在 NGINX 世界中是否有可能发生这样的事情。我们正在考虑在我们现有的 Web 应用程序上设置 NGINX 静态页面缓存,但是我们希望根据特定的 cookie 值来缓存页面。
例如:
如果传入请求有一个名为 XYZ 且值为“123”的 cookie,那么我们只想将该页面缓存 3 小时。如果不是,我们不想缓存它。
NGINX 可以实现这样的功能吗?如果是这样,有人可以帮忙吗?
提前致谢。
是的,这是可能的。它的工作原理与您想象的有点不同:
首先设置缓存,例如使用 proxy_cache
指令。
然后将 cookie 值映射为 map
:
map $cookie_XYZ $bypass {
'123' 0;
'default' true;
}
然后你可以使用这个值来绕过缓存(对于没有cookie的请求):
location /somelocation {
proxy_cache_bypass $bypass;
...
}