Reverse Proxy mit SSL (apache mod_proxy) Backend wsgi Server (apache mod_wsgi + flask)
Eine Konfiguration, bei der ein Reverse-Proxy eine Anfrage über https empfängt und über http an den Backs-WSGI-Server weiterleitet.
Zu diesem Zeitpunkt wurde beim Umleiten mit flask die URL des Umleitungsziels im Client-Browser zu http.
<VirtualHost *:443>
...
ProxyPass / http://my.wsgi.server/
ProxyPassReverse / http://my.wsgi.server/
...
</VirtualHost>
mod_proxy sollte gemäß der Dokumentation eingestellt werden.
Location
curl -v http://my.wsgi.server/
Dann wurde der absolute Pfad mit http: // für Location angegeben. Anscheinend ist das das Problem. Wenn Sie einen absoluten Pfad angeben, scheint ProxyPassReverse nicht ordnungsgemäß zu funktionieren (das Schema wird nicht neu geschrieben).
Sie können url_for (..., _scheme = "https") verwenden, um das Schema https zu erstellen. Da die Änderungen jedoch groß sind und der Backs-WSGI-Server allein nicht funktioniert, werde ich dies nicht tun.
Es scheint, dass relative Pfade in RFC7321 zulässig sind. https://triple-underscore.github.io/RFC7231-ja.html#section-7.1.2 Schreiben Sie den Location-Header neu.
<VirtualHost *:80>
...
Header edit Location ^http:// //
...
</VirtualHost>
curl -v http://my.wsgi.server/
Das Schema ist aus dem Speicherort verschwunden und die Umleitung über den Reverse-Proxy funktioniert jetzt ordnungsgemäß.
Recommended Posts