1

我为我的一个网站设置了清漆。我正在使用开源软件 Piwik 进行统计跟踪。

Piwik 可以选择使用代理进行跟踪,这意味着 Piwik 的 URL 不会在我的源代码中显示。基本上它是一个 PHP 文件,它位于我的 wordpress 安装中,它将 CURL 帖子发送到我的 Piwik 安装......

现在,我使用以下方式设置我的清漆: https ://github.com/mattiasgeniar/varnish-3.0-configuration-templates

在 vcl_fetch 我添加了:

if (req.url ~ "piwik") {
    set beresp.ttl = 120s;
    return (hit_for_pass);
}

在 vcl_recv 我添加了:

if (req.url ~ "piwik") {
    return (pass);
}

发生的事情是,我只看到网站上实际拥有的流量的 50%...

恐怕是因为我的 vcl_fetch 设置...

我阅读了 pass 和 hit_for_pass 之间的区别,据我了解 beresp.ttl 是一个配置,我指导 varnish 继续做 pass 120s

还有一件事,WP 上的 W3TotalCache 在我的 piwik.php 文件中添加了一些缓存标头,例如 Max-Age & expires。如果没有 Varnish,它仍然可以正常工作并正确跟踪。Varnish和那些标题之间是否可能存在某种冲突?

我做对了吗?为什么你认为我 50% 的跟踪被遗漏了?

谢谢。

4

1 回答 1

0

传入 vcl_recv 的 Varnish 配置是正确的。

您在 vcl_fetch 中的代码可以被删除,由于 recv 中的代码,它在这一点上没有任何区别。

请记住,在 vcl_fetch 中过滤响应标头的任何 VCL 代码也会针对传递的响应运行。我猜您正在过滤 piwik 发送的 Set-Cookie。

于 2013-11-06T14:29:16.453 回答