2014-12-08 75 views
2

我正在使用Nginx + uWSGI + Flask构建Web服务API。如何通过瓶子处理web api

我按照http://flask.pocoo.org/docs/0.10/deploying/uwsgi/如下

在Nginx的,我想瓶处理所有要求appapi和其他nginx的处理。

ex。
http://www.example.com/appapi/query?name=123将由烧瓶处理
http://www.example.com/将由nginx处理。

我添加下面的配置让烧瓶处理。

location = /appapi { rewrite^/appapi /; } 
location /appapi { try_files $uri @appapi ; } 
location @appapi { 
    include uwsgi_params; 
    uwsgi_param SCRIPT_NAME /appapi; 
    uwsgi_modifier1 30; 
    uwsgi_pass 127.0.0.1:3301; 
} 

uWSGI监听3301端口,并将加载烧瓶应用程序,Flask应用程序代码。我已经定义了appapi的路线

@app.route('/appapi/query', methods=['GET']) 
def query(): 
    print 'query()' 

但是我发现查询函数没有被调用,并且在日志中。它返回404,没有找到。
在此先感谢!在Nginx的配置

@app.route('/query', methods=['GET']) 
def query(): 
    print 'query()' 

然后:

回答

2

你可以做到这一点

location /appapi/ { 
    include uwsgi_params; 
    uwsgi_pass 127.0.0.1:3301; 
} 
+0

似乎作品,谢谢,我有更多的问题,为什么文件(HTTP://flask.pocoo .org/docs/0.10/deployloying/uwsgi /)使用uwsgi_modifier1和uwsgi_param以及它为什么不起作用? – 2014-12-08 03:29:28

+0

'uwsgi_modifier1'已弃用。 'uwsgi_param'传递脚本名称,但是使用基于'/' – nathancahill 2014-12-08 17:09:50

+0

的路由更简单,是的,我使用/ routes,它工作正常,然后我只想将api路由到flask并且其他人使用nginx处理,但是我遇到了问题在帖子中提出。 – 2014-12-09 04:55:32