6. 谈一下你对 uWSGI 和 nginx 的理解

本文深入解析WSGI协议,uWSGI服务器及其独占的uwsgi协议,阐述其在Python Web开发中的角色,包括与Nginx的配合工作原理,以及反向代理和负载均衡的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是 ‘Web服务器’ 和‘Web框架’?

在python web开发中,我们经常使用uwsgi配合nginx,来部署一个web框架,例如Django或flask。同时我们又会说,框架和web服务器之间要符合WSGI协议,才能相互配合工作。以下先理清几个概念:

web服务器用来接收客户端请求,建立连接,转发响应的程序。至于转发什么样的响应,则交由web框架来处理,即处理具体的业务逻辑,如查询数据库,生成实时信息等。Nginx就是一个web服务器,Django 或 flask 就是一个web框架。

2.什么是 “WSGI”,“uWSGI”,“uwsgi”?

WSGI:(协议)

如何做到任意一个web服务器们都能搭配任意一个框架呢?这就产生了WSGI协议,只要web服务器和web框架满足WSGI协议,他们之间就能互相搭配。因此WSGI是一个协议,一个约定。

uWSGI:(web服务器

uWSGI是一个Web服务器,它实现了WSGI、uwsgi、http等协议。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。

uwsgi:(协议)

WSGI一样是一种通信协议,是uWSGI服务器的独占协议,用于定义传输信息的类型(type of information),每一个uwsgi packet4byte为传输信息类型的描述,与WSGI协议是两种东西,据说该协议是fcgi协议的10倍快。

3. 为什么需要Nginx服务器?

 

好了,有了以上的概念。那实际上,一个uWSGI的web服务器,加上Django这样的web框架,旧已经可以实现网站的功能了。那还为什么需要Nginx服务器呢?

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

Nginx拥有如下特点

1.作为 web 服务器,它处理静态文件和索引文件效果非常高;
2.它的设计非常注重效率,最大支持 5 万个并发连接,但只占用很少的内存空间;
3.稳定性高,配置简洁;
4.强大的反向代理和负载均衡功能,平衡集群中各个服务器的负载压力应用。

4.什么是“代理服务器”和“反向代理服务器”?

说到这里,再来顺便说一下什么是代理服务器反向代理服务器

代理服务器:(Proxy Server)

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

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

反向代理服务器:(Reverse Proxy)

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

反向代理的作用:

  1. 保证内网安全,可以使用反向代理服务器提供的WAF功能,阻止web攻击。
  2. 负载均衡,通过反向代理服务器来优化网站的负载
  3. 缓存静态资源,加快访问速度

 

更直白的说:正向代理服务器代理的是客户端,反向代理服务器代理的是服务器 (可能是多台)

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

1.首先浏览器发起http请求到Nginx服务器

2.Nginx根据接收到请求包,进行url分析,判断访问的资源类型:如果是静态资源,直接读取静态资源返回给浏览器;如果请求的是动态资源就转交给uWSGI服务器。

3.uWSGI服务器根据自身的uwsgi 和 WSGI协议,找到对应的Django框架

4.Django框架下的应用进行逻辑处理后,将返回值发送到uWSGI服务器

5.然后uWSGI服务器再返回给Nginx服务器

6.最后Nginx将返回值返回给浏览器进行渲染显示给用户

 

 参考来源:

uwsgi、wsgi和nginx的区别和关系

几个概念:WSGI,uWSGI,uwsgi,Nginx

做python Web开发你要理解:WSGI & uwsgi

浅谈uWSGI和Nginx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值