J'ai une application Flask qui est actuellement servie sur une machine (appelée first_vm
) en utilisant la commande suivante dans supervisord
:
gunicorn run:app -b 0.0.0.0:8002 -k socketio.sgunicorn.GeventSocketIOWorker --workers 1
Cette application fait également l'objet d'un proxy inverse localement sur le port 80
par nginx
de telle sorte que http://first_vm/
servira l'application comme prévu.
Ce que je voudrais faire, c'est un reverse proxy de l'application sur un autre serveur (disons second_vm
), de sorte que http://second_vm/my_app
sert l'application en frappant gunicorn
sur first_vm:8002
.
Voici la configuration de nginx que je possède actuellement second_vm
:
location /my_app {
proxy_pass http://first_vm:8002/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
Cette configuration fonctionne bien dans la mesure où elle sert mon application sur http://second_vm/my_app
mais les fichiers statiques (par exemple, JS/CSS) ne sont pas servis correctement parce que le navigateur essaie de les récupérer à partir de http://second_vm/
au lieu de http://second_vm/my_app
.
Par exemple, Chrome me dira qu'il Failed to load resource: the server responded with a status 404
dans le scénario suivant :
http://second_vm/blueprint/static/css/bootstrap.min.css <-- what Chrome fails to fetch
http://second_vm/my_app/blueprint/static/css/bootstrap.min.css <-- what it should fetch
Quelqu'un peut-il m'aider à faire fonctionner ce système ?