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使用urllib模块开发的多线程豆瓣小站mp3下载器
Jan 16 Python
python采用django框架实现支付宝即时到帐接口
May 17 Python
对numpy中array和asarray的区别详解
Apr 17 Python
ActiveMQ:使用Python访问ActiveMQ的方法
Jan 30 Python
python交易记录整合交易类详解
Jul 03 Python
python爬虫解决验证码的思路及示例
Aug 01 Python
如何在python中实现随机选择
Nov 02 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
python小白学习包管理器pip安装
Jun 09 Python
python3 简单实现组合设计模式
Jul 02 Python
Python生成器generator原理及用法解析
Jul 20 Python
Python 多进程原理及实现
Dec 21 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中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
php分页函数完整实例代码
2014/09/22 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
PHP实现递归的三种方法
2020/07/04 PHP
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
使用python绘制二维图形示例
2019/11/22 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
python中什么是面向对象
2020/06/11 Python
Python读写Excel表格的方法
2021/03/02 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
BOSE德国官网:尽探索之力,享音乐之极
2016/12/11 全球购物
如何进行Linux分区优化
2013/02/12 面试题
会计专业毕业生自荐信范文
2013/12/20 职场文书
书法培训心得体会
2014/01/05 职场文书
面试后的英文感谢信
2014/02/01 职场文书
初中校园广播稿
2014/02/02 职场文书
室内设计专业自荐信
2014/05/31 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
党支部党的群众路线对照检查材料
2014/09/24 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
学校党员干部承诺书
2015/05/04 职场文书
在职证明书模板
2015/06/15 职场文书