1. WebServer是监听端口,负责HTTP连接管理/数据收发/HTTP协议实现等底层上的处理.
  2. Web框架定义的是单个HTTP请求处理的流程.
  3. Nginx是反向代理服务器,是一个特殊的WebServer应用,和WebServer并不是同级的概念.Tornado既是WebServer又是Web框架,这两者并不矛盾。举例来说,你写了一个Tornado应用之后,直接把Tornado端口跑在8000,这个时候,通过localhost:8000就能访问到你的网页.这里分两步,Tornado完成了底部IO事件的监听和数据接受等工作,这是Tornado完成了其作为WebServer的使命.然后你通过按照Tornado框架定义的流程,在对应的地方写了个get函数,实现了这个页面的具体内容,这是Tornado作为Web框架体现了作用.那么nginx有什么用?它是个反向代理,反向代理顾名思义,其作用就是将接收到的HTTP请求按照一定的规则转发给后端其他服务器处理.比如在你的一台机器上跑了三个Tornado应用:foo1,foo2,foo3.端口分别为8000,8001,8003.你希望用户可以直接通过80端口来访问这些应用.这个时候你就可以用Nginx来达到这个目的.让Nginx跑在80端口,当它接收到请求时,如果是/foo1,就转发给8000端口处理;如果是/foo2,就转发给8001端口处理;foo3类似.所以,Tornado和Nginx并没有什么联系.实际上,很多框架都实现了一些简易WebServer,用于调试.Tornado的WebServer是异步的,以可以处理大量的非活跃长连接著称.