2014-09-04 126 views
0

我已经配置了nginx + uwsgi +烧瓶,现在我正在为预先定义的烧瓶路径添加前缀。基本问题是:它甚至有可能吗?烧瓶和nginx路由

比方说,我有一条路线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 2014-09-04 13:55:07

回答

1

一个建议是让你的应用程序中的路由逻辑:

app.route('/api/login') 

或实现以 '/ API' 的url_prefix的 'API' 蓝图:

文件:API /视图。 PY

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'更少重复的解决方案。感谢蓝图创意! – skornos 2014-09-05 06:21:32