varnishncsa 不记录自定义标头

varnishncsa 不记录自定义标头

我在 Debian Wheezy 系统上使用 Varnish 3.0.2。我希望能够设置自定义标头并让其内容出现在请求日志中。但是,尽管我知道标头正在设置并传递到后端,但它们的内容似乎对 不可见varnishncsa

在我的vcl_recv我有

set req.http.X-my-header = "blahblah";

并且,为了测试,这是我的自定义格式字符串varnishncsa

'%{X-my-header}i'

我应该blahblah在每个请求的日志中看到。但是,我得到的只是-。似乎我的标头没有传递到varnishncsa

如何在我的日志中包含自定义标题?

答案1

我刚刚遇到了这个问题,这是搜索时得到的最佳结果,所以我将在这里发布我的解决方案/解决方法以供将来参考:)

varnishncsastd.log("key:value")可以记录VCL中设置的值1。我用它来记录我的自定义标头。使用您的示例,将其添加到您的vcl_recv

set req.http.X-my-header = "blahblah";
std.log("X-my-header:" + req.http.X-my-header);

然后在日志格式字符串的某处使用以下内容varnishncsa(注意标题名称后面的 x 而不是 i):

%{VCL_Log:X-my-header}x

答案2

我认为 Varnish Book 在解释如何记录标头时存在错误。试试这个:

varnishncsa -F '<%{age}o> <%{x-cache}o> %U %s'

相关内容