图解
WSGI
wsgi server(比如 uWSGI)要和 wsgi application(比如 django )交互,uWSGI 需要将过来的请求转给 django 处理,那么 uWSGI 和 django 的交互和调用就需要一个统一的规范,这个规范就是 WSGI。
WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。自从 WSGI 被开发出来以后,许多其它语言中也出现了类似接口。
WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个 Gateway,也就是网关。网关的作用就是在协议之间进行转换。
WSGI 是作为 Web 服务器与 Web 应用程序或应用框架之间的一种低级别的接口,以提升可移植 Web 应用开发的共同点。WSGI 是基于现存的 CGI 标准而设计的。
uWSGI
uWSGI 是一个 Web 服务器,它实现了 WSGI 协议、uwsgi、http 等协议。Nginx 中 HttpUwsgiModule 的作用是与 uWSGI 服务器进行交换。
uwsgi
与 WSGI 一样是一种通信协议,是 uWSGI 服务器的独占协议,用于定义传输信息的类型(type of information),每一个 uwsgi packet 前 4byte 为传输信息类型的描述,与 WSGI 协议是两种东西,据说该协议是 fcgi 协议的 10 倍快。
FastCgi 协议, uwsgi 协议与 http 协议有什么用?
nginx 和下游服务器交互就必须使用同一个协议,只要大家沟通好使用哪个协议,就可以正常运行了。
这三种协议就是 nginx 为了与下游服务器交互事先约定好的协议。