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字符串连接方法分析
Apr 12 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
Python遍历pandas数据方法总结
Feb 09 Python
详谈python中冒号与逗号的区别
Apr 18 Python
Python csv模块使用方法代码实例
Aug 29 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
浅谈Python中的字符串
Jun 10 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 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
php 短链接算法收集与分析
2011/12/30 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
php环境无法上传文件的解决方法
2014/04/30 PHP
php生成curl命令行的方法
2015/12/14 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
Python脚本实现格式化css文件
2015/04/08 Python
对PyTorch torch.stack的实例讲解
2018/07/30 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
python多线程并发及测试框架案例
2019/10/15 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
校园之星获奖感言
2014/01/29 职场文书
兴趣小组活动总结
2014/05/05 职场文书
服务口号大全
2014/06/11 职场文书
公司活动总结范文
2014/07/01 职场文书
学校青年志愿者活动总结
2015/05/06 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
利用python Pandas实现批量拆分Excel与合并Excel
2021/05/23 Python
element多个表单校验的实现
2021/05/27 Javascript