Preliminary
- 网关的作用就是在协议之间进行转换。 uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。 Nginx中
- HttpUwsgiModule的作用是与uWSGI服务器进行交互。
- wsgi server OR wsgi application均是实现了wsgi 协议的server OR application
- uwsgi协议<服务器和服务端应用程序的通信协议,规定了怎么把请求转发给应用程序和返回>是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type
of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。 - Gunicorn 是实现WSGI和HTTP协议的服务器
wsgi server 和wsgi application,WSGI之间的互动
wsgi server (比如uWSGI) 要和 wsgi application(比如django )交互,uWSGI需要将过来的请求转给wsgi application处理,那么uWSGI 和 wsgi application的交互和调用就需要一个统一的规范,这个规范就是WSGI WSGI(Web Server Gateway Interface)
WSGI<基于现存的 CGI 标准设计>,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。In other words, 它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范
WSGI / uwsgi / uWSGI区分
WSGI是一种通信协议。
uwsgi是一种线路协议 而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
FastCgi协议, uwsgi协议, http协议有什么用?
nginx 和 uWSGI交互就必须使用同一个协议,而上面说了uWSGI支持FastCgi,uwsgi,http协议,这些都是nginx支持的协议,只要大家沟通好使用哪个协议,就可以正常运行了。
馊主意
全小写是线路协议。eg.
<u>wsgi
全大写是通信协议。eg. WSGI
第一个字母小写,其余全大写是web 服务器。 eg.uWSGI,实现了uwsgi 和WSGI协议
图解