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 相关文章推荐
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
python实现保存网页到本地示例
Mar 16 Python
django之常用命令详解
Jun 30 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
Django ImageFiled上传照片并显示的方法
Jul 28 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 Python
python opencv实现简易画图板
Aug 27 Python
Python中常用的os操作汇总
Nov 05 Python
用 Python 定义 Schema 并生成 Parquet 文件详情
Sep 25 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 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
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
PHP基础之运算符的使用方法
2013/04/28 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
jquery操作select方法汇总
2015/02/05 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
2017/08/26 jQuery
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
vue 设置 input 为不可以编辑的实现方法
2019/09/19 Javascript
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
Python实现线程池代码分享
2015/06/21 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
python pandas中对Series数据进行轴向连接的实例
2018/06/08 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
python用for循环求和的方法总结
2019/07/08 Python
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
个人自我鉴定
2013/11/07 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
关于青春的演讲稿
2014/05/05 职场文书
驻村工作先进事迹
2014/08/14 职场文书
挂职学习心得体会
2014/09/09 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
庆祝教师节标语
2014/10/09 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers