Proxy inverse avec SSL (apache mod_proxy) Serveur backend wsgi (apache mod_wsgi + flask)
Une configuration dans laquelle un proxy inverse reçoit une requête via https et la transmet au serveur wsgi backend via http.
À ce moment, lors de la redirection avec flask, l'url de la destination de la redirection dans le navigateur client est devenue http.
<VirtualHost *:443>
...
ProxyPass / http://my.wsgi.server/
ProxyPassReverse / http://my.wsgi.server/
...
</VirtualHost>
mod_proxy doit être défini conformément à la documentation.
Location
curl -v http://my.wsgi.server/
Ensuite, le chemin absolu avec http: // a été spécifié pour Location. Apparemment, c'est là le problème. Si vous spécifiez un chemin absolu, ProxyPassReverse ne semble pas fonctionner correctement (le schéma ne se réécrit pas).
Vous pouvez utiliser url_for (..., _scheme = "https") pour créer le schéma https. Cependant, étant donné que les changements sont importants et que le serveur wsgi backend seul ne fonctionnera pas, je ne le ferai pas.
Il semble que les chemins relatifs sont autorisés dans la RFC7321. https://triple-underscore.github.io/RFC7231-ja.html#section-7.1.2 Réécrivez l'en-tête Location.
<VirtualHost *:80>
...
Header edit Location ^http:// //
...
</VirtualHost>
curl -v http://my.wsgi.server/
Le schéma a disparu de Location et la redirection via le proxy inverse fonctionne désormais correctement.