清漆新手,不是HTTP新手。抱歉,如果这是新手/明显的领域,但谷歌搜索没有透露答案。
当清漆向esi include url
发出请求时默认情况下发送的Cookie(和其他请求信息)
这是通过vcl
配置文件以编程方式控制的。
那就是 - 我的理解是esi包含在清漆中的要点是允许将有状态信息填充到从缓存中提取的页面中。应用程序使用会话ID(可能)获取此有状态信息,该会话ID通常通过cookie中发送的数据实现。
我不清楚的是,清漆是否只是传递
无论varnish默认传递什么,是否可以在varnish vcl
文件中控制?
(一个PHP应用程序,如果重要的话)
答案 0 :(得分:2)
只是进行了一些挖掘,似乎将cookie传递给ESI请求。
ESI请求也将由清漆处理。这允许您再次处理该特定ESI对象的所有请求标头和缓存行为。
在http://blog.lavoie.sl/2013/08/varnish-esi-and-cookies.html我找到了以下示例。这应该允许您为特定的esi请求取消设置/或保留cookie。
sub vcl_recv {
if (req.esi_level > 0) {
# Backend may want to treat this request differently
set req.http.X-Esi-Level = req.esi_level;
if (req.url !~ "esi-cookies=1") {
unset req.http.cookie;
}
} else {
unset req.http.X-Esi-Level; # remove for security
}
}
sub vcl_fetch {
# Activate Edge Side Includes, but only if X-Esi header is present
if (beresp.http.X-Esi) {
set beresp.do_esi = true;
unset beresp.http.X-Esi; # remove header
}
}