2014-09-04 3 views
0

Я настроил nginx + uwsgi + флягу, и теперь я боюсь с добавлением пути к моим определенным колпачкам. Основной вопрос: возможно ли это?Flask и nginx routing

Предположим, у меня есть маршрут app.route('/login'), и я хотел бы настроить nginx для доступа к этому маршруту, как с адреса /api/login.

Моя текущая конфигурация выглядит следующим образом, но он не работает

location = /api { rewrite^/api/; } 
location /api { try_files $uri @api; } 
location @api { 
     include   uwsgi_params; 
     uwsgi_pass   uwsgicluster; 

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

Спасибо за любую помощь.

+1

Почему бы не сохранить логику маршрута в вашем приложении? app.route ('/ api/login') – chishaku

ответ

1

Одно предложение, чтобы сохранить логику маршрутизации внутри приложения:

app.route('/api/login') 

Или реализовать 'API' план с url_prefix из '/ апи':

файла: апи/просмотров. ру

from flask import Blueprint, render_template, abort 
from jinja2 import TemplateNotFound 

api = Blueprint('api', __name__, url_prefix='/api') 

@api.route('/', defaults={'page': 'index'}) 
@api.route('/<page>') 
def show(page): 
    if page == 'login': 
     # do something 
    try: 
     return render_template('pages/%s.html' % page) 
    except TemplateNotFound: 
     abort(404) 

файл: app.py

from flask import Flask 
from .api import api 

app = Flask(__name__) 
app.register_blueprint(api) 
+0

Я искал менее повторяющееся решение, чем писать '/ api' всюду. Спасибо за идею Blueprint! – skornos