我希望生成的资源只提供给具有管理权限的用户,并且我希望Varnish为我缓存它,这样后端就不必在每次请求它时重新生成它。我也不想在后端执行缓存,因为我有用于此目的的Varnish。
下面是我的后端所做的伪代码:
if (authenticated(cookie))
{
if (stale)
{
regenerate_and_send()
}
else
{
not_modified()
}
}
else
{
access_denied()
}因此,我在考虑Varnish执行验证(条件GET)和后端响应“未修改”、“访问被拒绝”或“200OK”HTTP状态(当然,在最后一种情况下重新生成资源)。
我需要Varnish将cookie传递到后端,但在缓存中存储资源时忽略cookie,因此只存储了一个副本。
我该怎么做呢?
执行验证和编写后端逻辑都很容易。我如何在Varnish中处理cookie,使它们不影响缓存,但仍然被传递到后端?
发布于 2012-03-16 06:38:40
默认情况下,如果请求有cookie,Varnish不会在缓存中查找,因此您必须编写自己的vcl配置文件。
如果我没理解错的话,有问题的资源可以提供给所有具有管理员特权的用户。这里的故事是这样的:每个用户都有一个不同的会话cookie,而varnish无法知道哪个会话cookie是管理员特权的。你可以(至少)做两件事:
如果用户获得管理员权限,
https://stackoverflow.com/questions/9709982
复制相似问题