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


Posted in Python onAugust 22, 2014

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端口

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

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

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

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

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

既然这样,那我们就可以使用域名绑定的方式来运行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访问结果

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

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

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

执行结果

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

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

Python 相关文章推荐
Python help()函数用法详解
Mar 11 Python
python自动zip压缩目录的方法
Jun 28 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
django1.11.1 models 数据库同步方法
May 30 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
一文了解Python并发编程的工程实现方法
May 31 Python
使用python turtle画高达
Jan 19 Python
解决springboot yml配置 logging.level 报错问题
Feb 21 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 Python
深入理解Pytorch微调torchvision模型
Nov 11 Python
python with statement 进行文件操作指南
Aug 22 #Python
Python中还原JavaScript的escape函数编码后字符串的方法
Aug 22 #Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 #Python
Python升级提示Tkinter模块找不到的解决方法
Aug 22 #Python
Python实现多行注释的另类方法
Aug 22 #Python
Python利用pyHook实现监听用户鼠标与键盘事件
Aug 21 #Python
Python发送Email方法实例
Aug 21 #Python
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
php程序之die调试法 快速解决错误
2009/09/17 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
php实现微信扫码支付
2017/03/26 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
js的三种继承方式详解
2017/01/21 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
python flask实现分页的示例代码
2018/08/02 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
资深财务管理人员自我评价
2013/09/22 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
励志演讲稿600字
2014/08/21 职场文书
财务工作个人总结
2015/02/27 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
降价通知函
2015/04/23 职场文书
爱国教育主题班会
2015/08/14 职场文书