2013-07-22 2 views
9

Ich habe eine Flasche App mit gunicorn läuft auf http://127.0.0.1:4000:Proxy eine Flasche App auf gunicorn zu einem subpath in nginx läuft

gunicorn -b 127.0.0.1:4000 webapp:app 

Nun möchte Ich mag nginx als Reverse Proxy verwenden und weiterleiten http://myserver.com/webapp-http://127.0.0.1:4000 in Ein Weg, dass jeder http://myserver.com/webapp/subpath geht zu http://127.0.0.1:4000/subpath.

Der Proxy/funktioniert gut umleiten, wenn keine subpath mit:

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;  
    } 
} 

Wie kann ich

location /webapp { 
    #go to my gunicorn app, translate URLs nicely 
} 

Diese Spitze aus dem Kolben-Entwickler hat nicht funktioniert: http://flask.pocoo.org/snippets/35/

Gelöst: Das Snippet http://flask.pocoo.org/snippets/35/ funktioniert! Ich hatte ein paar absolute URLs in meinen Vorlagen (z. B. /task/delete) und musste alles in url_for() ändern.

dumm ... aber jetzt funktioniert es wie erwartet, habe ich meinen App auf ‚http://myserver.com/subpath

+0

Können Sie Ihre Controller einfach im Flask App-Programm anzeigen lassen? – Karthikeyan

+0

@Karthikeya getan! –

+0

Also, myserver.com/today funktioniert, aber nicht myserver.com/webapp/today, oder? – Karthikeyan

Antwort

10

ich mein Problem gelöst: Die Schnipsel http://flask.pocoo.org/snippets/35/ Arbeit ist, ich so dumm war in meinen Vorlagen absolute URLs zu haben. Ich änderte das zu url_for() und jetzt funktioniert es wie Charme.

+0

+1 für die Antwort zurück! :-) –