1

我认为这是使用 varnish 的一种可能性,您可以在其中更改其用户标头中的引用者,然后从缓存或服务器为他们提供内容。我想知道如何才能做到这一点。

我在centos 32位机器上用“req.http.referer”然后在varnish 2.1中“设置req.http.referer”尝试了这个,但是当我用命令“varnishtop -i TxHeader -”检查结果时它不起作用我推荐人”。

有人有比这更好的想法吗?

4

1 回答 1

3

至少在 Varnish 3.0 上,以下工作按预期工作。显然,如果响应是从缓存中提供的,并且您没有将 req.http.Referer 用于 hash(),那么如何更改引用标头并不重要。

# Modify Referer header
sub vcl_recv {
  if (req.http.Referer) {
     # Referer was set. Replace foo with bar
     set req.http.Referer = regsub(req.http.Referer,"foo","bar");
  } else {
     # Referer was not set. Set it to something anyway.
     set req.http.Referer = "http://referer.was.empty/";
  }
}

另请注意,varnishtop -i TxHeader -I Referer区分大小写。如果您这样做,即使您的 HTTP 后端也能理解标头,set req.http.referer它也不会匹配(根据RFC 2612 4.2消息标头不区分大小写)。-I Refererreferer:

于 2013-02-18T14:07:58.543 回答