uwsgi、uWSGI、WSGI、nginx的区别与关联

共计 936 个字符,预计需要花费 3 分钟才能阅读完成。

在做python web开发,经常会使用uWSGI配合NGINX来部署一个web框架,在学习web开发时,又会说web服务器和web框架之间都是符合WSGI协议的,那么它们之间到底有什么联系?

要搞清楚这个问题之前,先要弄懂它们的概念

区分 WSGI / uwsgi / uWSGI

  • WSGI是一种通信协议
  • uwsgi 是一种线路协议,而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
  • uWSGI 是实现了uwsgi 、WSGI 和 http 等协议的Web服务器
  • uwsgi 是uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information)

Web 服务器和 Web 框架

Web 服务器就是用来接收客户端请求,建立连接,转发响应的程序。转发的内容是什么呢?这个要交由Web框架来处理,

即处理一些业务逻辑,如增删改查,然后生成响应。

Nginx 是一个Web服务器,Django 或 flask 就是一个web框架

再来看 uWSGI 和 WSGI

如何做到任意一个web服务器,都能搭配任意一个web框架?这个时候就产生了WSGI协议,只要web服务器和web框架都按WSGI协议来注册,它们之间就能相互搭配。所以WSGI只是一个协议,一个约定。而不是python的模块、框架等具体的功能。

而uWSGI 就是一个实现了WSGI协议的web服务器,Django或flask就是一个按WSGI协议注册的框架,所以uWSGI+Flask这样组合就能实现一个网站的基本功能了。

WSGI协议

WSGI协议是一种规定,规定了服务器和框架之间如何传输数据。

  • application() 是 WSGI 协议的具体体现
  • environ 是服务器传过来的数据,使用字典
  • start_response 的作用是框架给服务器传响应头
  • return 是框架返回响应体

为什么要使用 Nginx?

网站访问量不大的话,当然可以由一个 uWSGI 和 Django 构成。但是一旦访问量过大,客户端请求连接就要进行长时间的等待。这个时候就出来了分布式服务器,我们可以多部署几台web服务器,来应对高并发的处理请求。但是谁来分配客户端的请求连接和web服务器呢?Nginx就是这样一个管家的存在,由它来分配。这也就是由Nginx实现反向代理,即代理服务器。

正文完
 
Dustin
版权声明:本站原创文章,由 Dustin 2019-11-10发表,共计936字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。