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读取txt文档的方法讲解
Jun 23 Python
python调用摄像头显示图像的实例
Aug 03 Python
深入了解Django中间件及其方法
Jul 26 Python
python求平均数、方差、中位数的例子
Aug 22 Python
如何基于python操作excel并获取内容
Dec 24 Python
Python JSON编解码方式原理详解
Jan 20 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
PyCharm无法引用自身项目解决方式
Feb 12 Python
python中如何设置代码自动提示
Jul 15 Python
写好Python代码的几条重要技巧
May 21 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
Jun 11 Python
python 使用tkinter与messagebox写界面和弹窗
Mar 20 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
php广告加载类用法实例
2014/09/23 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
php session的应用详细介绍
2017/03/22 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
简述Matlab中size()函数的用法
2016/03/20 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
koa+jwt实现token验证与刷新功能
2019/05/30 Javascript
微信公众号平台接口开发 获取微信服务器IP地址方法解析
2019/08/14 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Linux中Python 环境软件包安装步骤
2016/03/31 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
python中几种自动微分库解析
2019/08/29 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
浅析matlab中imadjust函数
2020/02/27 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
中学生自我鉴定
2014/02/04 职场文书
个人承诺书
2014/03/26 职场文书
股东合作协议书
2014/04/14 职场文书
国旗下演讲稿
2014/05/08 职场文书
双拥工作宣传标语
2014/06/26 职场文书