Magento, Klarna och Lastbalanserare på Amazon
Vi upptäckte idag när vi körde betalningar på en Magento-lösning att vi skickade fel IP-adress för kunden till Klarna. Modulen är en standardmodul från Klarna för att hantera deras betalningar.
Började undersöka koden från Klarna och insåg ganska snart att de använder REMOTE_ADDR som borde vara satt till klientens IP-adress. Däremot när man kör med Amazon Elastic Load Balancing så sätts den till en annan IP-adress. Klientens IP-adress sätts i HTTP_X_FORWARDED_FOR.
Enklaste lösningen för att få ordning på detta är ett litet "hack" längst upp i din index.php (rooten på Magento-installationen.
if (array_key_exists("HTTP_X_FORWARDED_FOR", $_SERVER)) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
Detta gör att vi skriver över värdet i REMOTE_ADDR med det korrekta värdet innan Magento börjar hantera förfrågan.