我正在尝试弄清楚如何允许后端查看特定注册页面上的跟踪 cookie,但在其他页面上忽略它们。目前,我正在尝试使用从后端发送到set beresp.ttl = 0s;
内部的自定义标头vcl_fetch
:
if (beresp.http.cache-control ~ "max-age=-30") { set beresp.ttl = 0s; }
但是注册页面仍然阻止后端读取 cookie。
我vcl_recv
使用这个方法删除它们:
set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+|_ga|_mkto_trk)=[^;]*", "");
set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", "");
if (req.http.Cookie ~ "^\s*$") { unset req.http.Cookie; }
我如何允许在这些特定页面的后端读取 cookie?我想我需要在vcl_recv
?中创建例外情况?
答案1
是的 - 您需要在后端的请求上“return(miss);”。vcl_fetch 仅在从后端“获取”项目时触发 - 如果项目已存储在缓存中,则 varnish 将不会运行获取代码。