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基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python 遍历子文件和所有子文件夹的代码实例
Dec 21 Python
python re模块findall()函数实例解析
Jan 19 Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
对pandas数据判断是否为NaN值的方法详解
Nov 06 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
Sep 25 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
新手入门学习python Numpy基础操作
Mar 02 Python
python中如何进行连乘计算
May 28 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
什么是Python包的循环导入
Sep 08 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/09/08 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
PHP实现简易blog的制作
2016/10/24 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
react基本安装与测试示例
2020/04/27 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
Python def函数的定义、使用及参数传递实现代码
2014/08/10 Python
python实现的重启关机程序实例
2014/08/21 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
JPype实现在python中调用JAVA的实例
2017/07/19 Python
python实现Excel文件转换为TXT文件
2019/04/28 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
Python __slots__的使用方法
2020/11/15 Python
css3中新增的样式使用示例附效果图
2014/08/19 HTML / CSS
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
如何启动时不需输入用户名与密码
2014/05/09 面试题
2015新学期家长寄语
2015/02/26 职场文书
2015年公民道德宣传日活动总结
2015/03/23 职场文书
紧急通知
2015/04/17 职场文书
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle