Tornado服务器中绑定域名、虚拟主机的方法,tornado虚拟主机


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端口

如果你想支持域名访问,可以用Nginx监听80端口做代理,或者你只有这么一个应用,直接就用Tornado监听80端口免去Nginx这一步,关键是这么干别人使用IP或者域名都能访问。谷歌了一大堆英文站点也找不到绑定域名教程,反正Tornado源文件也就那一点就翻开看看,里边怎么写?结果看到这么一段话

大喜!不知道为什么,这段在文档里是没有的,然后再往下细看,返现默认是有host机制的,并且任何host访问,截图

既然这样,那我们就可以使用域名绑定的方式来运行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访问结果

甚至也可以支持正则匹配,比如让它也支持www前缀

复制代码 代码如下:

application.add_handlers(r"^(www\.)?a\.com$", [(r"/", DomainHandler),])

执行结果

结合这个机制,你可以在一个应用上绑定多个域名及子域名泛域名的多站部署。更易于管理!


本服务器上的虚拟主机未捆绑您的域名是为何?

一个网站要正常常访问,需要满足2个条件:
1. 域名解析到空间的IP地址。
2. 空间绑定了域名。

通过你的描述,应该是你没有做第二项,你的域名能能访问到服务器,但服务器没有绑定域名,所以不知道要指向到这个服务器的哪个空间里去,因此出现了你看到的那些提示。

解决办法:
在你的空间管理平台中,有一项“绑定域名”,只要添加域名绑定即可。
如果你没有域名管理平台的操作权限,可联系你的空间服务商,让他们帮你完成。这个操作很简单,服务商二分钟就可帮你完成。
 

怎把域名绑定在虚拟主机上

你申请主机的时候会让填域名吧?如果没有填,如下:
第一步,解析,进入域名管理面板,把A记录指向你申请的虚拟主机的IP地址。
第二步,备案(国外主机不用备),联系你申请空间的服务商,他会告诉你怎么做。
第三步,绑定,进入主机管理面板,有增加域名的选项,增加绑定就可以了。
如果以上感觉不明白,那你可以采用个极简单的方法,问你的虚拟主机服务商的客服,要来你的IP,再联系你的域名服务商,把这个IP给他,让他给你解析到这个IP地址。然后联系你的虚拟主机服务商,让他帮你绑定。
 

评论关闭