Backend läd Teile über http anstatt über https

Gerade bei großen Projekten erreichen uns immer wieder Meldungen, dass nach einer SSL-Umstellung die Bilder im Frontend und bestimmte Assets im Backend nicht per HTTPS:// geladen werden. Die Darstellung wird dann vom Browser blockiert. In der Regel ist hier die Ursache, dass ein vorgeschalteter Proxy (bspw. Varnish, Loadbalancer, SSL-Proxy) SSL terminiert und intern nicht per SSL mit den Appservern kommuniziert. In diesem Fall wird oftmals die Server-Variable “HTTP_X_FORWARDED_PROTO” gesetzt. Diese Variable wird grundsätzlich auch von Shopware ausgewertet - mit einer Bedigung, der Proxy der die SSL-Terminierung vornimmt, muss als “trustedProxy” in der config.php definiert sein:

'trustedproxies' => [

        '192.168.0.10',

        '192.168.0.11',

    ],

 

Wie könnt ihr das nun debuggen? Zunächst einmal solltet ihr testen, ob die Ursache wirklich die fehlende Servervariable ist. Shopware wertet folgende beiden Variablen aus:

$_SERVER['HTTPS']

$_SERVER['HTTP_X_FORWARDED_PROTO']

Am besten schaut ihr also zunächst im Backend unter Systeminfo > PHP-Info nach, ob eine der beiden Variablen bei einem HTTPS-Request gesetzt ist (Einfach Backend per HTTPS:// aufrufen). Typischerweise steht auf einem Server ohne Proxy die Variable "\_SERVER['HTTPS']" dann auf "On". Bei einem verteilten Setup mit Proxy ist die Variable _SERVER[‘HTTPS’] leer und die Variable “$_SERVER[‘HTTP_X_FORWARDED_PROTO’]” enthält den Wert “https”.

Wenn beide Fälle so nicht zutreffen, erkennt Shopware euren Proxy nicht als “trustedProxy”. Du solltest dann die config.php mit der IP deines Proxys nach dem Beispiel oben erweitern. Wenn das nicht funktioniert, kannst du als schnelle Übergangslösung die Variable auch direkt in deiner config.php setzen. Hierzu reicht ein einfaches “$_SERVER[‘HTTP_X_FORWARDED_PROTO’] = ‘https’;” in der config.php:

  array (

    'host' => 'localhost',

    'port' => '3306',

    'username' => '...',

    'password' => '...',

    'dbname' => '...',

    ...

 

Danach solltest du deinen Setup grundlegend debuggen und dich mit deinem Hoster abstimmen, da Shopware nicht in der Lage ist, deinen Proxy per IP zu erkennen. Eine weiteres Anzeichen für eine fehlerhafte Erkennung ist, dass die Shopware-Statistiken die Besucher nicht mehr tracken können, da Shopware selbst nur die IP des Proxys erhält und nicht die IP des Besuchers. Hier sollte dein Hoster dich bei der tiefgreifenderen Konfiguration unterstützen können.​

2 Likes