Preliminary
- uWSGI是一个Web服务器,它实现了WSGI协议、FastCgi、uwsgi、http等协议(nginx也支持的协议)。 Nginx中 HttpUwsgiModule的作用是与uWSGI服务器进行交互。
- uwsgi协议<服务器和服务端应用程序的通信协议,规定了怎么把请求转发给应用程序和返回响应>:它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述
- Gunicorn 是实现WSGI和HTTP协议的服务器
- Nginx出现的原因:当访问量比较大时,客户端连接需要进行长时间等待,这时候出现分布式服务器,然后Nginx用来分配客户端的请求连接由哪些web 服务器处理
- 网关的作用就是在协议之间进行转换
wsgi server 和wsgi application,WSGI之间的互动
wsgi server 要和 wsgi application交互,前者需要将请求转发给wsgi application处理,那么uWSGI 和 wsgi application的交互和调用就需要一个统一的规范,这个规范就是WSGI(Web Server Gateway Interface)
馊主意
全小写是线路协议, 常用于在uWSGI服务器与其他网络服务器的
数据通信
。eg.<u>wsgi
全大写是通信协议。eg. WSGI
第一个字母小写,其余全大写是web 服务器。 eg.uWSGI,实现了uwsgi 和WSGI协议
图解
拓展知识(web服务器的分类和职责)
-
严格意义上,Web服务器
<主要处理静态页面以及作为Servlet容器,解释和执行servlet/JSP>
只负责处理HTTP协议,只能发送静态页面的内容。而JSP,ASP,PHP等动态内容需要通过CGI、FastCGI等接口交给应用服务器<主要运行业务逻辑,如EJB、JNDI和JMX等J2EE API,还包含事物管理、数据库连接等功能。>
处理。 -
比如Web服务器包括Nginx,Apache,IIS等。而应用服务器包括WebLogic,JBoss等。
应用服务器一般也支持HTTP协议
,但是应用服务器的HTTP协议部分仅仅是支持,一般不会做特别优化,所以很少有见Tomcat直接暴露给外面<直接处理任意请求,包括动态内容和静态内容>,而是和Nginx、Apache等配合,只让Tomcat处理JSP和Servlet部分 -
Apache和Nginx是纯粹的Web服务器,而IIS和Tomcat因为具有了
解释和执行
服务器端代码的能力,可以称作为轻量级应用服务器。JBoss、Weblogic和WebSphere因为能提供强大的J2EE API功能,毫无疑问是绝对的应用服务器。
巨人的肩膀
uWSGI、WSGI和uwsgi - Dus - 博客园
Gunicorn 和WSGI指北1
Gunicorn 和WSGI指北2