uWSGI、Django和nginx的关系

在python web开发中,我们经常使用uWSGI配合nginx部署一个web框架,如Django。
下面来说下这三个到底有什么关系和区别。

uWSGI

首先来说两个协议:
WSGI协议(通讯协议):Python用于Web开发的协议(用于处理Web服务器和应用程序(APP)的交互信息)。
uwsgi协议(传输协议,速度很快):uWSGI程序实现的一个自有的协议(采用二进制来存储数据,之前的协议都是使用字符串,所以在存储空间和解析速度上,都更快)。
uWSGI是一个实现了WSGI协议、uwsgi、http等协议的Web服务器。

Django

web开发有两大块,web服务器和web框架。
web服务器即用来接受客户端请求,建立连接,转发响应的程序。至于转发的内容是什么,交由web框架来处理,即处理这些业务逻辑。
Django就是这个web框架,还有一个和Django比肩的框架是Flask。

Nginx

其实uWSGI+Django的话完全可以完成一个网站,前提是访问量不大。一旦访问量上来了,客户端请求连接就要进行长时间的等待。这个时候就出来了分布式服务器,我们可以多来几台web服务器,都能处理请求。但是谁来分配客户端的请求连接和web服务器呢?Nginx就是这样一个管家的存在,由它来分配。这也就是由Nginx实现反向代理,即代理服务器。

uWSGI、Django和nginx的关系