使用 Varnish 剥离 Google Cookie

Cas*_*n79 4 varnish google-analytics

我在我的服务器上设置了清漆并且一直在研究 VCL(我认为它非常简洁)并且我在vcl_recv我正在写的中有以下内容,我不明白为什么有必要。

if (req.url ~ “\?(utm_(campaign|medium|source|term)|adParams|client|cx|eid|fbid|feed|ref(id|src)?|v(er|iew))=”) {
    set req.url = regsub(req.url, “\?.*$”, “”);
}
Run Code Online (Sandbox Code Playgroud)

这正在剥离谷歌分析跟踪对谷歌的 GIF 请求。

为什么有必要从进入我的服务器的请求中剥离出来,这不会破坏我客户的跟踪和分析吗?

3mo*_*olo 5

这不是剥离任何 cookie,而是 regsubing 很多 uri 扩展/参数(如 ver=somethingsomething)。我个人认为,如果你不是故意写这个,那就不要使用它。

关于删除 google __utm* cookie 会对分析产生什么影响的问题。你链接到一些外部 js 脚本,客户端获取它,谷歌发布一个与你的域匹配的 Set-Cookie。用户向您发出的下一个请求包含此 Cookie,从而阻止您使用独立于用户的缓存。因此,您在您这边删除了这个 cookie。Google 分析不受影响,因为您提供的 google .js 无法读取服务器端的标头,而是在客户端读取标头,因此换句话说,它们对您的网站不起作用。Analytics 在客户请求 .js 文件时获取了他们的信息。显然,您不应发出任何名称冲突的 cookie,因为这可能会导致问题。

我基本上使用varnish-cache.org 上的示例

if (req.http.Cookie) {
    set req.http.Cookie = regsuball(req.http.Cookie, "(^|; ) *__utm.=[^;]+;? *", "\1"); #     removes all cookies named __utm? (utma, utmb...) - tracking thing

    if (req.http.Cookie == "") {
        remove req.http.Cookie;
    }
}
Run Code Online (Sandbox Code Playgroud)