2013-07-22 4 views
9

У меня есть приложение Flask работает с gunicorn на http://127.0.0.1:4000:Proxy приложение Колба работает на gunicorn в подкаталог в Nginx

gunicorn -b 127.0.0.1:4000 webapp:app 

Теперь я хотел бы использовать Nginx в качестве обратного прокси-сервера и вперед http://myserver.com/webapp к http://127.0.0.1:4000 в способ, которым каждый http://myserver.com/webapp/subpath отправляется http://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/

SOLVED: фрагмент http://flask.pocoo.org/snippets/35/ работает! У меня было несколько абсолютных URL-адресов в моих шаблонах (например, /task/delete) и пришлось изменить все на url_for().

Глупая ... но теперь он работает, как и ожидалось, у меня есть мое приложение на «http://myserver.com/subpath»

+0

Можете ли вы просто показать свои контроллеры в программе приложений для флэков? – Karthikeyan

+0

@ Karthikeyan сделано! –

+0

Итак, myserver.com/today работает, но не myserver.com/webapp/today, не так ли? – Karthikeyan

ответ

10

я решил мою проблему: сниппета http://flask.pocoo.org/snippets/35/ делает работу, я был настолько глуп, чтобы иметь абсолютные URL-адреса в своих шаблонах. Я изменил это на url_for(), и теперь он работает как шарм.

+0

+1 для возврата ответа! :-) –

Смежные вопросы