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命令行参数解析模块optparse使用实例
Apr 13 Python
python中私有函数调用方法解密
Apr 29 Python
分享6个隐藏的python功能
Dec 07 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
浅谈python可视化包Bokeh
Feb 07 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
解决python 读取 log日志的编码问题
Dec 24 Python
Python列表倒序输出及其效率详解
Mar 04 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 Python
Python3使用Selenium获取session和token方法详解
Feb 16 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 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
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
JavaScript原型继承之基础机制分析
2011/08/26 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
javascript实现前端分页效果
2020/06/24 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
使用Python对SQLite数据库操作
2017/04/06 Python
python放大图片和画方格实现算法
2018/03/30 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
python中下标和切片的使用方法解析
2019/08/27 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
Selenium之模拟登录铁路12306的示例代码
2020/07/31 Python
python实现银行账户系统
2021/02/22 Python
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
学校岗位设置方案
2014/01/16 职场文书
开发房地产协议书
2014/09/14 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
2019入党申请书格式
2019/06/25 职场文书
学习nginx基础知识
2021/09/04 Servers
Redis读写分离搭建的完整步骤
2021/09/14 Redis
基于Python实现西西成语接龙小助手
2022/08/05 Golang