1

我目前有 3 个在线商店,有 3 个不同的域,使用 Apache 运行 magento,并且在 centos 上运行 varnish(使用 Phoenix 页面缓存扩展)

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

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

我能够使用 maxmind 数据库进行 php-pecl-geoip 以使其正常工作,但随着我网站上的用户增加,我不得不开始使用 varnish。

如何使用 varnish 实现此功能,以便我知道用户来自哪个国家/地区,以便向用户显示消息以查看其相关网站?

4

2 回答 2

0

Gunah,我想你在这里错过了重点。当将 Varnish 放在 Apache 前面时,PHP 看到的客户端 IP 将始终是 Varnish 的 IP(如果它位于同一服务器上,则为 127.0.0.1)。

Molleman,在这种情况下,您需要查看 Varnish 设置的 X-Forwarded-For 标头以获取真实的客户端 IP。你可以在 default.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

于 2013-10-26T15:45:50.810 回答
0

您可以在 Magento 中使用 JSON 操作结果创建您的 Cronroller。然后你可以用 JavaScript 检查这些并输出结果。

不要忘记将控制器添加到 Varnish 的 withlist 中。

于 2013-10-21T08:21:12.207 回答