如何使用varnish页面缓存启用magento上的geoip

时间:2013-10-19 20:53:35

标签: php magento apache2 varnish geoip

我目前在线拥有3个不同域名的3个商店,运行带有Apache的清洁工具和使用在centos上运行的清漆(使用Phoenix页面缓存扩展程序)

一家商店为英国,另一家为爱尔兰,另一家为美国

麻烦是(示例)如果美国用户访问英国商店,我希望通知用户转到页面上的正确商店,(我不希望他们自动重定向)

我能够通过maxmind数据库使用php-pecl-geoip来实现这一点,但随着我网站上的用户增加,我不得不开始使用清漆。

我如何使用varnish实现此功能,以便了解用户所在的国家/地区,以便向用户显示一条消息以查看其相关网站?

2 个答案:

答案 0 :(得分:0)

您可以在Magento中使用JSON Action Result创建Crontroller。 然后你可以用JavaScript检查这些并输出结果。

不要忘记将您的控制器添加到Varnish中的列表中。

答案 1 :(得分:0)

古巴,我想你错过了这一点。 当将Varnish放在Apache之前时,PHP将看到的客户端IP将始终是Varnish的IP(如果它保留在同一服务器中则为127.0.0.1)。

molleman,在这种情况下,您需要查看由Varnish设置的X-Forwarded-For标头以获取真实的客户端IP。你可以看看Varnish如何在default.vcl中设置它:

if (req.http.x-forwarded-for) {
    set req.http.X-Forwarded-For =
    req.http.X-Forwarded-For + ", " + client.ip;
} else {
    set req.http.X-Forwarded-For = client.ip;
}

如果您的Web服务器位于负载均衡器后面,那么您需要更多工作。请在此处参考解决方案:Varnish removes Public IP from X-Forwarded-for