2013-07-22 31 views
9

में एक सब-पाथ को gunicorn पर चल रहा http://127.0.0.1:4000 पर gunicorn के साथ चल रहे एक फ्लास्क ऐप्लिकेशन है, उनके एक फ्लास्क एप्लिकेशन:प्रॉक्सी nginx

gunicorn -b 127.0.0.1:4000 webapp:app 

अब मैं में http://127.0.0.1:4000 को एक रिवर्स प्रॉक्सी के रूप में nginx का उपयोग करें और http://myserver.com/webapp अग्रेषित करने के लिए चाहते हैं एक तरीका है कि प्रत्येक http://myserver.com/webapp/subpathhttp://127.0.0.1:4000/subpath पर जाता है।

प्रॉक्सी/अच्छी तरह से काम करता है अनुप्रेषित जब एक सब-पाथ का इस्तेमाल नहीं:

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

मैं

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

सेट कर सकते हैं कैसे बोतल डेवलपर्स से इस टिप काम नहीं किया: http://flask.pocoo.org/snippets/35/

हल किया गया: स्निपेट http://flask.pocoo.org/snippets/35/ काम करता है! मेरे टेम्पलेट्स में कुछ पूर्ण URL थे (उदा। /task/delete) और उन्हें सब कुछ url_for() में बदलना पड़ा। टुकड़ा http://flask.pocoo.org/snippets/35/ काम करता है, मैं तो मेरे टेम्पलेट्स में संपूर्ण URL के लिए बेवकूफ था:

बेवकूफ ... लेकिन अब यह उम्मीद की तरह काम करता है, मैं 'http://myserver.com/subpath'

+0

क्या आप केवल फ्लास्क ऐप प्रोग्राम में अपने नियंत्रक दिखा सकते हैं? – Karthikeyan

+0

@ कार्तिकेयन ने किया! –

+0

तो, myserver.com/today काम कर रहा है, लेकिन myserver.com/webapp/today नहीं, है ना? – Karthikeyan

उत्तर

10

मैं मेरी समस्या हल पर मेरे ऐप की है। मैंने इसे url_for() में बदल दिया और अब यह आकर्षण की तरह काम करता है।

+0

+1! :-) –

संबंधित मुद्दे