Django中uWSGI 和Nginx理解以及如何配合工作

理解 一. uWSGI 是一个 Web 服务器,它实现了 WSGI 协议、uwsgi、http 等协议。Nginx 中 HttpUwsgiModule 的作用是与 uWSGI
【Django中uWSGI 和Nginx理解以及如何配合工作】服务器进行交换。WSGI 是一种 Web 服务器网关接口。它是一 个 Web 服务器(如 nginx,uWSGI 等服务器)与 web 应用
(如用 Flask 框架写的程序)通信的一种 规范。
要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

  • WSGI 是一种通信协议。
  • uwsgi 是一种线路协议而不是通信协议,在此常用于在 uWSGI 服务器与其他网络服务器的数据通信。
  • uWSGI 是实现了 uwsgi 和 WSGI 两种协议的 Web 服务器。
二. nginx 是一个开源的高性能的 HTTP 服务器和反向代理:
1. 作为 web 服务器,它处理静态文件和索引文件效果非常高;
2. 它的设计非常注重效率,最大支持 5 万个并发连接,但只占用很少的内存空间;
3. 稳定性高,配置简洁;
4. 强大的反向代理和负载均衡功能,平衡集群中各个服务器的负载压力应用。
如何使用 首先浏览器发起 http 请求到 nginx 服务器,Nginx 根据接收到请求包,进行 url 分析,判断访问的 资源类型,如果是静态资
源,直接读取静态资源返回给浏览器,如果请求的是动态资源就转交给 uwsgi 服务器,uwsgi 服务器根据自身的 uwsgi 和 WSGI
协议,找到对应的 Django 框架,Django 框架下的 应用进行逻辑处理后,将返回值发送到 uwsgi 服务器,然后 uwsgi 服务器
再返回给 nginx,最后 nginx 将返回值返回给浏览器进行渲染显示给用户。
详细如下图所示
Django中uWSGI 和Nginx理解以及如何配合工作
文章图片

    推荐阅读