2013-10-19 94 views
1

Magento的geoip的我公司目前有3家網上商店有3個不同的域,運行的Magento與Apache和清漆(使用鳳凰頁面緩存擴展名)在CentOS如何啓用與清漆頁面緩存

一家商店是英國運行,另一個爲愛爾蘭和另一個爲美國

麻煩是(示例)如果美國用戶訪問英國商店,我希望用戶被通知去網頁上的正確的商店,(我不希望他們自動重定向)

我能夠使用maxmind數據庫的php-pecl-geoip來獲得此功能,但作爲我的用戶,我們bsite增加了,我不得不開始使用清漆。

我如何才能在清漆上實現此功能,因此我知道用戶來自哪個國家,以便我可以向用戶顯示一條消息以查看其相關網站?

回答

0

古娜,我想你錯過了這裏的觀點。 當把清漆放在Apache前面時,PHP會看到的客戶端IP永遠是Varnish的IP(如果它停留在同一臺服務器上,則爲127.0.0.1)。

molleman,在這種情況下,您需要查看Varnish設置的X-Forwarded-For標頭以獲取真實的客戶端IP。你可以看到光油如何將其設置在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

+0

如果是這種情況,您可能需要mod_rpaf(用於Apache 2.2)或mod_proxy(用於Apache 2.4),那麼您會在'$ _SERVER ['REMOTE_ADDR' ']'在PHP中。 – chmac

0

你可以用Magento中的JSON Action Result創建你的Crontroller。 然後你可以檢查這些與JavaScript並輸出結果。

不要忘記將您的控制器添加到清漆中的清單。