【问题标题】:Tornado proxy whith nginx and subpaths带有 Nginx 和子路径的 Tornado 代理
【发布时间】:2017-10-10 13:02:22
【问题描述】:

我想将请求从我的 www.mydomain.com/subdirectory 重定向到相应的 Tornado 服务器,如下所示:

www.example.com/app1 -> http://10.0.0.5:8082;
www.example.com/app2 -> http://10.0.0.6:8082;
www.example.com/app3 -> http://10.0.0.7:8082;

我有这个 nginx 配置:

location ^~ /app1 {
        proxy_pass http://10.0.0.5:8082/;
    }

location ^~ /app2 {
        proxy_pass http://10.0.0.6:8082/;
    }

location ^~ /app3 {
        proxy_pass http://10.0.0.7:8082/;
    }

我的 Tornado 应用:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("main.html")

class HomeHandler(tornado.web.RequestHandler):
    def get(self):
        self.render("home.html")

class UserHandler(tornado.web.RequestHandler):
    def get(self, user_id):
        self.render("user.html")

class UserStatusHandler(tornado.web.RequestHandler):
    def get(self, user_id):
        self.render("user_status.html")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
        (r"/home", HomeHandler),
        (r"/user/([0-9]*)", UserHandler),
        (r"/user/([0-9]*)/status", UserStatusHandler),
        '''
        my app have a lot of other pages with subpaths
        '''
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8082)
    tornado.ioloop.IOLoop.current().start()

所以,当命中时:

http://www.example.com/app1 -> it works, main.html is rendered
http://www.example.com/app1/ -> Tornado throws an warning: WARNING:tornado.access:404 GET // (10.0.0.5) 0.41ms
http://www.example.com/app1/home -> Tornado throws an warning: WARNING:tornado.access:404 GET //home (10.0.0.5) 0.41ms
http://www.example.com/app1/home/ -> Tornado throws an warning: WARNING:tornado.access:404 GET //home/ (10.0.0.5) 0.41ms
http://www.example.com/app1/user/1 -> Tornado throws an warning: WARNING:tornado.access:404 GET //user/1 (10.0.0.5) 0.41ms
http://www.example.com/app1/user/1/status -> Tornado throws an warning: WARNING:tornado.access:404 GET //user/1/status (10.0.0.5) 0.41ms

url 上的额外 / 导致错误

请问,有人可以帮帮我吗?

【问题讨论】:

标签: python redirect nginx proxy tornado


【解决方案1】:

在我的位置添加 / 解决了这个问题。 谢谢理查德·史密斯。

【讨论】:

    猜你喜欢
    • 2018-03-24
    • 1970-01-01
    • 2012-06-10
    • 2019-11-11
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多