Tornado服务器中绑定域名、虚拟主机的方法,tornado虚拟主机
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地址。然后联系你的虚拟主机服务商,让他帮你绑定。
评论关闭