Tornado服务器中绑定域名、虚拟主机的方法

人生最好的旅行,就是你在一个陌生的地方,发现一种久违的感动。你在看孤独的风景,你在逃避我的真心!

Tornado默认是监听IP加端口形式,由于Tornado在国内用的人极少,资料更是鳞毛凤角。下面说说Tornado如何绑定域名。

默认Tornado的hello word是这么来的


import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")

application = tornado.web.Application([
(r"/", MainHandler),
])

if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()

运行后,使用浏览器访问IP+8888端口

如果你想支持域名访问,可以用Nginx监听80端口做代理,或者你只有这么一个应用,直接就用Tornado监听80端口免去Nginx这一步,关键是这么干别人使用IP或者域名都能访问。谷歌了一大堆英文站点也找不到绑定域名好代码教程,反正Tornado源文件也就那一点就翻开看看,里边怎么写?结果看到这么一段话

大喜!不知道为什么,这段在文档里是没有的,然后再往下细看,返现默认是有host机制的,并且任何host访问,截图

既然这样,那我们就可以使用域名绑定的方式来运行tornado应用了,而且支持多域名,因为那就是一串正则,在刚才那个例子的基础上加个域名绑定


import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")

class DomainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, a.com")


application = tornado.web.Application([
(r"/", MainHandler),
])

application.add_handlers(r"^a\.com$", [
(r"/", DomainHandler),
])

if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()

a.com访问结果

甚至也可以支持正则匹配,比如让它也支持www前缀


application.add_handlers(r"^(www\.)?a\.com$", [(r"/", DomainHandler),])

执行结果

结合这个机制,你可以在一个应用上绑定多个域名及子域名泛域名的多站部署。更易于管理!

以上就是Tornado服务器中绑定域名、虚拟主机的方法。一粒灰尘,改变不了大海的明净;一颗石子,阻挡不了江河的前进;一丝乌云,遮挡不了太阳的光辉;一次灾难,破坏不了勇者的励志。更多关于Tornado服务器中绑定域名、虚拟主机的方法请关注haodaima.com其它相关文章!

您可能有感兴趣的文章
python如何修改装饰器中参数

在Lighttpd服务器中运行Django应用的方法

用Python实现服务器中只重载被修改的进程的方法

python-tornado的接口用swagger进行包装的实例

django+tornado实现实时查看远程日志的方法