我使用Varnish来服务网站,但需要让缓存依赖于Geo位置。我写了一个小的Vmod,它使用Ip2Location设置一个请求标头,其中包含国家代码,然后通过Apache将其传递给我的应用程序(Magento),提供相关内容,但我需要Varnish根据国家/地区代码进行缓存
有没有办法实现这个目标?
答案 0 :(得分:3)
我对此进行了整理。
在vcl_hash子例程中,我需要将国家/地区代码添加到散列数据中。
sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
hash_data(req.http.X-Country-Code);
return (hash);
}
我正在使用的默认vcl已将整个vcl_hash子例程注释掉,因为它使用了req.hash而不是hash_data(),这在Varnish 3中不再可用,因此需要进行调整。