从Varnish统计/点击中排除域名

时间:2015-06-02 07:31:38

标签: varnish

在我的服务器上,我安装了Varnish,并且在apache上有两个站点。其中一个是Drupal,它使用了清漆集成。

另一个,基于wordpress,不使用Varnish,在我的default.vcl中,来自此域的任何资源都是“错过”(因为我无法安装与Varnish通信的插件)。

问题是我的varnishstat或varnishhist输出是“脏”的:我在wordpress网站上有很多“未命中”条目,而我想只为基于drupal的网站提供统计信息。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:2)

您可以通过在 config.vcl 开头添加几条VCL行轻松完成:

import std;
sub vcl_miss {
    std.log("Backend: " + req.backend);
}
sub vcl_pass {
    std.log("Backend: " + req.backend);
}
sub vcl_hit {
    std.log("Backend: " + req.backend);
}
sub vcl_pipe {
    std.log("Backend: " + req.backend);
}

然后,调整 varnishncsa 命令:

varnishncsa -m VCL_Log:Backend:\ drupal

同样适用于 varnishhist 或任何其他清漆实用程序。

答案 1 :(得分:1)

varnishstat / varnishhist没有选项可以过滤内容并从内存日志varnishd中读取。 有几种方法可以解决您的问题,一种可能是运行不同的清漆实例,一种用于wordpress,一种用于drupal,另一种用作两者之间的调度程序(您可以使用不同的端口和清漆实例在同一台机器上运行它们)名)。

OTOH,你可以尝试制作wordpress"使用"清漆,我真的不明白为什么你需要为清漆配置wordpress。只需配置wordpress的清漆。 :) 例如。这是一个方法:https://www.varnish-software.com/blog/step-step-speed-wordpress-varnish-software

如果你出于某种原因无法做到这一点,你可以试着去弄脏"脏"请求在日志中看起来更好。呼叫管道可以解决这个问题。 (管道也可以从vcl_recv调用。管道短路客户端和后端连接,Varnish只会坐在那里并随机播放)

它应该像这样工作 if(req.url~ /wordpress/.*){return(pipe); }

RGDS, 学家