Python 中使用修饰器来将某个 url 绑定到具体的处理逻辑上的写法很容易理解,但在实际生产环境中时,一般部署是 nginx-->Web 服务器(uWSGI)-->Flask ,我的疑问是在这几个角色之间,路由到底是怎么处理的呢?我现在的感觉是 nginx 可以处理路由, Flask 中也可以处理路由,那到底该怎么用呢?
比如,我目前有一个需求,我有一个域名, www.somesite.com ,我想要把某一个 Flask 写的逻辑绑定到比如 www.somesite.com/act 下,而不是根目录下。
我看网上大部分的教程都是以绑定到域名的根目录来示例的,有没有办法可以实现我上面的需求呢?我感觉应该通过配置 nginx 就可以实现,但我找了好久没有找到方法。。
1
halfcrazy 2015-11-25 15:14:55 +08:00
rewrite
|
2
virusdefender 2015-11-25 15:59:49 +08:00
使用 Python 框架处理, nginx 一般就是做反向代理,没有也可以用的。
|
3
Felldeadbird 2015-11-25 16:45:53 +08:00
rewrite ^/act$ /Flask 的请求地址$1 last;
我觉得应该是上面类似的。。 不过通常来说,不推荐在 nginx 实现路由规则。每次修改都得修改 nginx 的规则,还得 reload 。还不如用程序实现。 |
4
Kokororin 2015-11-25 17:02:45 +08:00
其实和 php 框架的路由差不多,都是交给 python/php 处理,而不是靠 nginx
|
5
linuxfish OP |
6
secondwtq 2015-11-25 21:05:23 +08:00 via iPhone
|
7
loading 2015-11-25 21:12:11 +08:00 via Android
你这是多级路由
|
8
xiewenlongs 2015-11-26 11:02:05 +08:00
nginx 管理总路由, 除了 path, 它还管理 domain 路由。 并且它决定一个 request 路由到哪个上游
flask 或者 django 这样的框架,管理下层路由( nginx 路由下来的 request )它决定哪个 path 由哪个 view function 处理 |