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.