php - 如何使用 Varnish 页面缓存在magento上启用geoip

标签 php magento apache2 varnish geoip

我目前在网上拥有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/

相关文章:

php - 打印包含在数组键中的值和打印包含在对象属性的数组键中的值有什么区别?

PHP - 将变量从一个页面带到另一个页面并使用

php - 如何在 Magento 中使用订单对象获取网站 ID

php - 在 multistore .htaccess 之后,Magento 中的类别 View (仅)缺少产品

PHP脚本执行和多线程环境(PHP5扩展)

bash - 使用 root 权限执行 CGI 脚本的最佳方法是什么?

apache2 - Apache 中的 nginx 相当于 Worker 和 prefork MPM 是什么?

php - 通过 MySQL/PHP 递增

php - 在组合框中选择一个项目并用与前一个选项 php 和 mysql 相关的数据填充另一个组合框

magento - nginx 多商店 magento