我认为这是清漆的可能性,你可以在其用户的标题中更改引用者,然后从缓存或服务器向他们提供内容。我想知道如何才能实现这一目标。
我用" req.http.referer"然后"设置req.http.referer"在Centos 32位机器上的清漆2.1中但是当我使用命令" varnishtop -i TxHeader -I Referer"检查结果时它没有工作。
任何人都有比这更好的想法吗?
答案 0 :(得分: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
区分大小写。如果您set req.http.referer
,那么它将与-I Referer
不匹配,即使您的HTTP后端也会理解referer:
标头(根据RFC 2612 4.2消息标头不区分大小写)。