添加主机名作为自定义 Varnish 标头

添加主机名作为自定义 Varnish 标头

我有几个 varnish 缓存服务器 (v2.1),我想在 varnish 响应的标头中添加主机名,这样我就能知道哪个服务器正在(或不)提供缓存页面。在谷歌上搜索后,我找到了这个片段,但它给出了错误:

sub vcl_deliver {
  if (obj.hits > 0) {
    set resp.http.X-MH-Cache ="HIT " obj.hits " "*
    server.hostname* " " resp.http.Age;
  } else {
    set resp.http.X-MH-Cache ="MISS " *server.hostname* ""
  }
}

我并不完全依赖此代码片段。理想情况下,我希望在发生错误或命中时设置主机名。

我对 vcl 文件还不太熟悉,所以任何指导和帮助我都会非常感激。非常感谢!

知识管理

答案1

偶然发现了这一点(难道不是一直这样吗?):https://www.varnish-cache.org/trac/wiki/VCLExampleHitMissHeader——正是我所寻找的。

答案2

更可能的错误是由于星号和在建立“时缺少加号”造成的。X-MH-缓存响应头:

Unknown token '*' when looking for STRING

有效的 vcl 代码片段如下所示:

vcl 4.1;
import std;
sub vcl_deliver {
  if (obj.hits > 0) {
    set resp.http.X-MH-Cache = "HIT: " + obj.hits + " *" + server.hostname + "* Age: " + resp.http.Age;
  } else {
    set resp.http.X-MH-Cache = "MISS *" + server.hostname + "*";
  }
}

可以在以下互联网档案网站上找到答案(2012 年 1 月 27 日)的 URL 的快照(2012 年 1 月 2 日): https://web.archive.org/web/20120309095329/https://www.varnish-cache.org/trac/wiki/VCLExampleHitMissHeader

相关内容