[PYTHON] Je suis resté coincé dans la redirection d'une application flask avec un proxy inverse entre les deux

phénomène

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.

Paramètres de proxy inverse

<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).

En flacon ...

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.

Dans RFC?

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.

Réécrire l'emplacement du côté du serveur wsgi

<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.

Recommended Posts

Je suis resté coincé dans la redirection d'une application flask avec un proxy inverse entre les deux
Je veux faire la transition avec un bouton sur le ballon
Je suis resté bloqué en essayant de spécifier un chemin relatif avec relative_to () en python
J'ai fait une application WEB avec Django
Ce que j'ai fait quand je suis resté coincé dans le délai avec lambda python
Made Mattermost Bot avec Python (+ Flask)
Création d'une application Web qui mappe les informations sur les événements informatiques avec Vue et Flask
Je veux travailler avec un robot en python.
Impossible de manipuler l'iframe dans la page avec Selenium
Mémo de travail que j'ai essayé i18n avec l'application Flask
J'ai un sqlite3.OperationalError
J'ai écrit python3.4 dans .envrc avec direnv et je l'ai autorisé, mais j'ai eu une erreur de syntaxe
J'ai eu une erreur de valeur lors de l'utilisation de JUMAN ++ avec PyKNP
Quand j'ai rendu CaboCha disponible en python3, je suis resté bloqué (Windows 10)
J'ai fait un jeu de frappe simple avec tkinter de Python
Mémo que je suis resté coincé dans l'introduction de Mezzanine
Ce que je suis resté coincé autour de l'interface graphique dans l'environnement python WSL
Jusqu'à ce que Django retourne quelque chose avec un robot de ligne!
J'ai fait un jeu de puzzle (comme) avec Tkinter of Python
Flask-Créer une liste Todo avec des mesures CSRF avec WTF avec Flask
J'obtiens une erreur du système d'exploitation: [Errno 8] Erreur de format d'exécution lors de l'exécution d'une application Flask avec une commande python
Quand j'ai coupé le répertoire pour UNIX Socket sous / var / run avec systemd, je suis resté coincé dans un piège et que faire
Application Web avec Python + Flask ② ③
Un peu coincé dans le chainer
Application Web avec Python + Flask ④
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 1
Créer une application Web de type Flask / Bottle sur AWS Lambda avec Chalice
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 2
J'ai créé un formulaire de tweet Nyanko avec Python, Flask et Heroku
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 3
J'ai essayé de créer une application todo en utilisant une bouteille avec python
Faisons une application WEB pour l'annuaire téléphonique avec flacon Partie 4
Je suis resté coincé quand j'ai essayé d'installer diverses choses avec Mac El capitaine pip, alors notez