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通过post提交数据的方法
May 06 Python
Python base64编码解码实例
Jun 21 Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 Python
Python使用folium excel绘制point
Jan 03 Python
详细介绍pandas的DataFrame的append方法使用
Jul 31 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
python3 实现调用串口功能
Dec 26 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
python 伯努利分布详解
Feb 25 Python
python使用pymongo与MongoDB基本交互操作示例
Apr 09 Python
Python字符串格式化f-string多种功能实现
May 07 Python
python os模块常用的29种方法使用详解
Jun 02 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
2014/08/13 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
JavaScript学习笔记之DOM基础操作实例小结
2019/01/09 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
python抓取最新博客内容并生成Rss
2015/05/17 Python
python在不同层级目录import模块的方法
2016/01/31 Python
详解python with 上下文管理器
2020/09/02 Python
通过案例解析python鸭子类型相关原理
2020/10/10 Python
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
汽车工程专业应届生求职信
2013/10/19 职场文书
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
教育专业自荐书范文
2013/12/17 职场文书
战略合作意向书范本
2014/04/01 职场文书
2015年学校信息技术工作总结
2015/05/25 职场文书
解析Java异步之call future
2021/06/14 Java/Android
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis