我认为这是使用 varnish 的一种可能性,您可以在其中更改其用户标头中的引用者,然后从缓存或服务器为他们提供内容。我想知道如何才能做到这一点。
我在centos 32位机器上用“req.http.referer”然后在varnish 2.1中“设置req.http.referer”尝试了这个,但是当我用命令“varnishtop -i TxHeader -”检查结果时它不起作用我推荐人”。
有人有比这更好的想法吗?
我认为这是使用 varnish 的一种可能性,您可以在其中更改其用户标头中的引用者,然后从缓存或服务器为他们提供内容。我想知道如何才能做到这一点。
我在centos 32位机器上用“req.http.referer”然后在varnish 2.1中“设置req.http.referer”尝试了这个,但是当我用命令“varnishtop -i TxHeader -”检查结果时它不起作用我推荐人”。
有人有比这更好的想法吗?
至少在 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 Referer
referer: