ich bräuchte mal bitte mal Eure Einschätzung zu einem Thema.
Wir betreiben SW (5.2) in der Amazon Cloud hinter einem Load Balancer. Dadurch wird anscheinend die PHP Umgebungsvariable $_SERVER['REMOTE_ADDR'] “falsch” gesetzt, nämlich mit der IP des Load Balancers statt des Kunden. Dies hat z.B. negative Auswirkungen auf die Shopware Statistiken.
Kann das jemand bestätigen und hat jemand vielleicht eine Lösung (ohne den Core zu verändern)?
Wäre es aus Eurer Sicht auch sinnvoll, dass der SW-Core konsequent auf die Nutzung von $_SERVER['REMOTE_ADDR'] verzichtet, sondern statdessen z.B. die bereits im Core integrierte ZEND-Methode Zend_Controller_Request_Http::getClientIp(true) nutzt (nicht getestet, sieht aber gut aus)? Ich würde dann ein Ticket aufmachen.
Wir haben ein ähnliches Setup, allerdings noch mit Varnish zwischen Load Balancer und PHP Apache Server. Hast Du denn in Deiner config.php folgendes stehen?
$config['trustedProxies'] = ['12.3.4.5']; // ersetzen mit IP-Adressen/Range des Loadbalancer und/oder Varnish
Wir haben ein ähnliches Setup, allerdings noch mit Varnish zwischen Load Balancer und PHP Apache Server. Hast Du denn in Deiner config.php folgendes stehen?
$config[‚trustedProxies‘] = [‚12.3.4.5‘]; // ersetzen mit IP-Adressen/Range des Loadbalancer und/oder Varnish
Vielen Dank für den Hinweis… die Option war mir noch nicht geläufig. Wenn ich die Beschreibung in den DevDocs richtig verstehe, wird dadurch ermöglicht, dass der Proxy (LB) den Header HTTP_X_FORWARDED_FOR setzt bzw. diesem vertraut wird. Jedoch wird nicht automatisch die $_SERVER[REMOTE_ADDR]durch den Header ersetzt, die SW für die User IP ausliest, oder? Ich werde es trotzdem mal ausprobieren, danke!
Nochmal vielen Dank! Nachdem wir nun endlich das Update fahren konnten, funktioniert die Weitergabe der IP Adresse einwandfrei.
Hier nocheinmal die Zusammenfassung für alle anderen Interessierten:
Wie von hhmarco73 beschrieben, wird \_SERVER[REMOTE\_ADDR] automatisch mit dem Wert von aus _SERVER[HTTP_X_FORWARDED_FOR] überschrieben, sofern die IP Adresse des Proxy in der config['trustedProxies'] eingetragen ist. Der Proxy muss natürlich den Header _SERVER[HTTP_X_FORWARDED_FOR] auch richtig setzen. Das ganze findet direkt im Symfony Framwork statt und ist deshalb in den Shopware Controllern nicht zu finden.