uWSGI+nginx提高Django的并发能力

1. 协议规范

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

WSGI是一种用于web服务器与应用程序之间的通信协议。

uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。

uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。


2. 代理服务器

代理服务器(Proxy Server)

是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。

这个就是正向的代理服务器,它是代理网络用户去访问获得网络信息,主要起到的是安全作用,因为有隐藏真实ip,突破访问限制的功能。其中最常见的就是VPN了。

反向代理服务器(Reverse Proxy)

反向代理,故名思意就是将代理服务器做出逆转,它主要的功能是代理服务器接收客户端发来的Http请求,转发到内部网络服务器,并返回Response给客户端。

image.png

反向代理的作用:

保证内网安全,可以使用反向代理服务器提供的WAF功能,阻止web攻击。

负载均衡,通过反向代理服务器来优化网站的负载

缓存静态资源,加快访问速度


3. nginx反向代理

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强。

它具有反向代理服务器的所有特点,并且配置简单,支持对大于1kb的文件进行压缩,静态文件缓存,可以大大提高访问效率。


4. Nginx+uWSGI增加Django的高并发过程

Nginx接受来自客户端的Http请求发送给uWSGI,uWSGI处理请求并将关键信息传递给web应用(django,flask等),应用返回Response经由uWSGI发送给Nginx,Nginx再发送给客户端。


            
            

本博客源码Github地址:

https://github.com/zeus-y/

请随手给个star,谢谢!

打赏

评论