清漆(错误或错误的配置)If-None-Match和If-Modified-因为总是空白

时间:2014-01-13 14:53:01

标签: varnish varnish-vcl

我正在使用带有cygwin的3.0.2版Windows预编译版本,这可能与此问题有关。

我想抓住

  • 如果-无 - 匹配
  • If-Modified-Since

标题

标题是由浏览器发送的,我可以在开发人员工具中看到这些标题被发送到Varnish,但我无法提取清漆中的值。

我试过了

  • 获取vcl_recv顶部的值并设置新标题(如果值被覆盖)
  • 我试过了两个
    • req.http.If-None-Match and req.http.If-Modified-Since
    • bereq.http.If-None-Match and bereq.http.If-Modified-Since

这些有用吗?我正在尝试访问vcl_fetch中的值

任何有类似问题的人?

1 个答案:

答案 0 :(得分:1)

两个标头都应该可以在vcl_fetch中访问。您应该能够使用最小的VCL文件进行确认,该文件只是将这两个标头作为响应标头回送给客户端。

backend default {
    .host = "127.0.0.1";
    .port = "80";
}

sub vcl_fetch {
    set beresp.http.X-If-Modified-Since = req.http.If-Modified-Since;
    set beresp.http.X-If-None-Match = req.http.If-None-Match;
}

如果这对您不起作用,请发布“varnishlog”输出,最好是未缓存的响应。浏览器和清漆之间是否还有其他HTTP代理?

我应该注意,varnish 在发出后端请求时会过滤掉两个标头,因此如果您需要从应用程序代码访问这些标头,则需要在vcl_recv中复制它们。