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.