我目前有 3 个在线商店,有 3 个不同的域名,在 centos 上运行 Apache 的 magento 和 varnish(使用 Phoenix 页面缓存扩展)
一家商店面向英国,另一家面向爱尔兰,还有一家面向美国
问题是(例如)如果美国用户访问英国商店,我希望通知该用户前往页面上的正确商店,(我不希望他们自动重定向)
我能够使用 php-pecl-geoip 和 maxmind 数据库来实现这一点,但是随着我的网站上的用户不断增加,我不得不开始使用 varnish。
我如何使用 varnish 实现此功能以便知道用户来自哪个国家,以便我可以向用户显示一条消息以查看他们的相关网站?
答案1
有一个 Varnish 模块(插件,我根据 cosimo 的原始版本修改了这个版本)可以帮助您:
https://github.com/iwebhosting/varnish-geoip
这将添加一个包含国家代码的 X-Geo-IP 标头。在您的 PHP 代码中,您可以通过 $_SERVER['X_GEO_IP'] 获取它,在 Varnish 中,您可以使用以下 VCL 代码片段确保不同国家/地区看到页面的不同缓存版本:
sub vcl_hash {
hash_data(req.http.X-Geo-IP);
}