Ho un app Flask in esecuzione con gunicorn sul http://127.0.0.1:4000
:Proxy un'applicazione Flask in esecuzione su gunicorn ad un sottotracciato in nginx
gunicorn -b 127.0.0.1:4000 webapp:app
Ora vorrei usare nginx come reverse proxy e in avanti http://myserver.com/webapp
-http://127.0.0.1:4000
in un modo in cui ogni http://myserver.com/webapp/subpath
passa a http://127.0.0.1:4000/subpath
.
Il proxy/redirect funziona bene quando non si utilizza un sottotracciato:
upstream app {
server 127.0.0.1:4000 fail_timeout=0;
}
server {
listen 80 default;
client_max_body_size 4G;
server_name _;
location/{
proxy_pass http://app;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
Come posso impostare
location /webapp {
#go to my gunicorn app, translate URLs nicely
}
Questo suggerimento da parte degli sviluppatori Flask non ha funzionato:
http://flask.pocoo.org/snippets/35/
RISOLTO: il frammento http://flask.pocoo.org/snippets/35/ funziona! Ho avuto alcuni URL assoluti nei miei modelli (ad esempio /task/delete
) e ho dovuto modificare tutto in url_for()
.
stupido ... ma ora funziona come previsto, ho la mia applicazione su 'http://myserver.com/subpath'
Puoi mostrare i controller solo nel programma di app Flask? – Karthikeyan
@Karthikeyan fatto! –
Quindi, myserver.com/today funziona, ma non myserver.com/webapp/today, non è vero? – Karthikeyan