2014-09-04 2 views
0

나는 nginx + uwsgi + 플라스크를 구성했으며 이제 플라스크에 정의 된 경로의 경로를 선행하는 데 어려움을 겪고 있습니다. 기본적인 질문은 : 가능한가?플라스크 및 nginx 루팅

내가 app.route('/login') 경로를 가지고 있고 /api/login처럼이 경로에 액세스하도록 nginx를 구성하고 싶다고 가정 해 봅시다.

내 현재의 구성은 다음과 같습니다하지만 어떤 도움

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과 'API'청사진 구현 :

파일 : API/전망. 평

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