Flask和nginx路由

时间:2014-09-04 13:27:37

标签: nginx routing flask uwsgi

我已经配置了nginx + uwsgi + flask,现在我正在努力将前置路径添加到我定义的烧录路径中。基本问题是:它甚至可能吗?

假设我有一条路由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 个答案:

答案 0 :(得分:2)

一个建议是将路由逻辑保留在您的应用程序中:

app.route('/api/login')

或者使用url_prefix为'/ api'实现'api'蓝图:

file:api / views.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)

file:app.py

from flask import Flask
from .api import api

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