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之大话题小函数(1)
Oct 10 Python
为python设置socket代理的方法
Jan 14 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
Python3删除排序数组中重复项的方法分析
Jan 31 Python
python游戏开发之视频转彩色字符动画
Apr 26 Python
python批量下载抖音视频
Jun 17 Python
给 TensorFlow 变量进行赋值的方式
Feb 10 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
Python tornado上传文件的功能
Mar 26 Python
python利用递归方法实现求集合的幂集
Sep 07 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/05/29 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
Python编程实现的简单神经网络算法示例
2018/01/26 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
Python异常处理操作实例详解
2018/05/10 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
html5指南-1.html5全局属性(html5 global attributes)深入理解
2013/01/07 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
员工晚婚的请假条
2014/02/08 职场文书
商场主管竞聘书
2014/03/31 职场文书
信息员培训方案
2014/06/12 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
项目负责人岗位职责
2015/02/15 职场文书
信访工作个人总结
2015/03/03 职场文书