我目前在网上拥有3个具有3个不同域的商店,并在centos上运行带有Apache和varnish(使用Phoenix页面缓存扩展名)的magento
一家商店在英国,另一家在爱尔兰,另一家在美国
麻烦是(例如)如果某个美国用户访问了uk store,我希望收到通知该用户转到页面上的正确商店,(我不希望他们被自动重定向)
我可以使用maxmind数据库进行php-pecl-geoip来使其工作,但是随着我网站上用户的增加,我不得不开始使用 Varnish 。
如何使用 Varnish 实现此功能,以便知道用户来自哪个国家/地区,以便向用户显示消息以查看其相关网站?
最佳答案
古纳(Gunah),我想您错过了这里的重点。
当将Varnish放在Apache的前面时,PHP将会看到的客户端IP将始终是Varnish的IP(如果位于同一服务器中,则为127.0.0.1)。
molleman,在这种情况下,您需要查看Varnish设置的X-Forwarded-For header ,以获得真实的客户端IP。您可以在Variant.vcl中查看Varnish的设置方式:
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
关于php - 如何使用 Varnish 页面缓存在magento上启用geoip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19471037/