Shopware hinter einem HTTP Load Balancer

Shopware 6.6

In Shopware 6.6 muss zunächst eine framework.yaml konfiguriert werden, die die Shopware interne TRUSTED_PROXIES Konfiguration aktiviert.


# config/packages/framework.yaml

framework:
    trusted_proxies: '%env(TRUSTED_PROXIES)%'


Anschließend kann in der .env.local die TRUSTED_PROXIES Konfiguration eingerichtet werden.

# .env.local

TRUSTED_PROXIES=127.0.0.1,10.20.0.0/24

Tragen Sie in der Konfiguration TRUSTED_PROXIES die Quell-IP-Adresse des Load Balancers ein. Wir empfehlen hier den Betrieb innerhalb eines creoline VPC-Netzwerkes, um die interne Infrastruktur zu demilitarisieren.


Konfiguration im Load Balancer

Damit der Request von Shopware authentifiziert werden kann, muss der X-Forwarded-Proto Header durch den Load Balancer an den App-Server gesendet werden. Durch den Abgleich der tatsächlichen Quell-IP kann sichergestellt werden, dass nur der autorisierte Load Balancer Zugriff erhält und Shopware die korrekten URLs generiert.


Konfiguration in HaProxy

# /etc/haproxy/haproxy.cfg

backend shopware
   mode http
   # [...]

   http-request add-header X-Forwarded-Proto %[var(req.scheme)]
   # Necessary for https URL Generation

Durch die Angabe der dynamischen Variable %[var(req.scheme)] wird das HTTP-Schema aus dem ursprünglichen Request an die HaProxy-Instanz verwendet, um sicherzustellen, dass der übermittelte X-Forwarded-Proto Header dem tatsächlichen weitergeleiteten HTTP-Schema entspricht.


Konfiguration in NGINX

# /etc/nginx/conf.d/shopware.conf

location / {
   proxy_pass http://10.20.X.X:80;
   # [...]

   proxy_set_header X-Forwarded-Proto $scheme;
}

Durch die Angabe der dynamischen Variable $scheme wird das HTTP-Schema aus dem ursprünglichen Request an die NGINX-Instanz verwendet, um sicherzustellen, dass der übermittelte X-Forwarded-Proto Header dem tatsächlichen weitergeleiteten HTTP-Schema entspricht.