uwsgi、wsgi和nginx的区别和关系

89403969 2019-12-11

区分uWSGI和WSGI:

在python web开发中,经常使用uwsgi配合nginx部署一个web框架,如Django或者flask,框架和服务器之间要符合wsgi协议

web服务器和web框架
  web服务器用来接收客户端请求,建立连接,转发响应,至于转发的内容,交由web框架来处理,即Django或者flask处理业务逻辑,如查询数据库,生成实时信息。Nginx就是一个web服务器,django或者flask就是web框架

uWSGI和WSGI:
  如何做到任意一个web服务器,都能搭配任意一个web框架,这就需要WSGI协议,只要服务器和web框架都满足WSGI协议,他们就能相互搭配。所以WSGI只是一种协议,一种约定,一种标准,就像U盘的插头形状,和电脑USB接口的形状一样,他们都满足这一种标准,所以他们能建立联系,实现对文件的操作。而uWSGI就是满足WSGI协议的一种服务器,用来接收客户端的请求,转发响应的程序。
  实际上,uWSGI服务器 + Django框架,就可以实现网站的功能了,但一旦客户端访问量过大,客户端请求连接就需要长时间的等待,这种模式就无法满足需求了,分布式服务器此时应运而生,而nginx就是分布式服务器的一大利器,我们可以多用几台服务器来分别处理请求,nginx就相当于管家一样分配客户端请求连接和web服务器,这就是用nginx来实现反向代理,及代理服务器。

uwsgi、wsgi和nginx的区别和关系

nginx和uWSGI服务器之间是如何配合工作的?

  首先浏览器发起http请求到nginx服务器,nginx根据接收的请求包,进行url分析,判断访问的资源类型,如果是静态资源,直接读取静态资源返回给浏览器,如果请求的是动态资源就转交给uwsgi服务器,uwsgi服务器根据自身的WSGI协议,找到对应的Django框架,Django框架下的应用进行逻辑处理,将返回值发送到uwsgi服务器,uwsgi服务器再返回给nginx,最后nginx将返回值返回给浏览器进行渲染显示给用户

相关推荐