uWSGI和Nginx

11 篇文章 2 订阅
3 篇文章 0 订阅

1.WSGI(Web Server Gateway Interface)服务器网关接口

是Python应用程序或框架和Web服务器之间的一种接口,已经被广泛接受, 它已基本达成它的可移植性方面的目标。 
WSGI 没有官方的实现, 因为WSGI更像一个协议. 只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行, 反之亦然。 
WSGI标准在 PEP 333 中定义并被许多框架实现,其中包括现广泛使用的django框架。

所以说WIGS是一种标准

WSGI的全称是Web Server Gateway Interface(Web服务器网关接口),它不是服务器、python模块、框架、API或者任何软件,只是一种描述web服务器(如nginx,uWSGI等服务器)如何与web应用程序(如用Django、Flask框架写的程序)通信的规范、协议。 
server和application的规范在PEP3333中有具体描述,要实现WSGI协议,必须同时实现web server和web application,当前运行在WSGI协议之上的web框架有,Flask, Django。

2.uWSGI

可以看作是一个应用程序,帮助我们实现WSGI协议,Http协议,这样我们可以不再关注网络通信的底层实现,将精力更多放在处理HTTP请求数据,返回HTML。利用uWIGS可以是我们的web应用得到更强的并发能力,uWIGS也可以返回静态文件(css,js,img…),但是很笨拙,一般静态文件都交由Nginx进行传输,所以配置中一般不配置static-map,如果直接由uWIGS接受HTTP请求则需要设置http:xxxx,如果只需要与反向代理服务器进行交互则只需要接受socket,uWIGS与Nginx交互相当于两个进程间交互,一般使用的是.sock文件或者指定端口接受socket。指定端口时再使用浏览器访问相应端口,uWIGS会提示skip,跳过该HTTP请求。

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

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

3.代理服务器(Proxy Server)

是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。 
这个就是正向的代理服务器,它是代理网络用户去访问获得网络信息,主要起到的是安全作用,因为有隐藏真实ip,突破访问限制的功能。其中最常见的就是VPN了。 


4.反向代理服务器(Reverse Proxy)

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

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

中间的反向代理服务器就是nginx 
右边的3台web服务器就是uWSGI

nginx的作用: 
1.反向代理,可以拦截一些web攻击,保护后端的web服务器 
2.负载均衡,根据轮询算法,分配请求到多节点web服务器 
3.缓存静态资源,加快访问速度,释放web服务器的内存占用,专项专用

uWSGI的适用: 
1.单节点服务器的简易部署 
2.轻量级,好部署

优缺点其实都已经很明显了。

5.Nginx(engine x)

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

它具有反向代理服务器的所有特点,并且配置简单,支持对大于1kb的文件进行压缩,静态文件缓存,可以大大提高访问效率。Nginx接受来自客户端的Http请求发送给uWSGI,uWSGI处理请求并将关键信息传递给web应用(django,flask等),应用返回Response经由uWSGI发送给Nginx,Nginx再发送给客户端。

Nginx是一个Web服务器其中的HTTP服务器功能和uWSGI功能很类似,但是Nginx还可以用作更多用途,比如最常用的反向代理功能。

Django 

Django是一个Web框架,框架的作用在于处理request和 reponse,其他的不是框架所关心的内容。所以如何部署Django不是Django所需要关心的 
下图是他们之间的关系: 

 

总结:

Django+uwsgi+nginx

nginx和uwsgi的区别和作用:

1, nginx是对外的服务器,外部浏览器通过url访问nginx, uwsgi是对内的服务器,主要用来处理动态请求。

2, nginx接收到浏览器发送过来的http请求,将包进行解析,分析url, a.如果是静态文件请求就直接访问用户给nginx配置的静态文件目录,直接返回用户请求的静态文件, b.如果不是静态文件,而是一个动态的请求,那么nginx就将请求转发给uwsgi,

 uwsgi接收到请求之后将包进行处理,处理成wsgi可以接受的格式,并发给wsgi,
 wsgi根据请求调用应用程序的某个文件,某个文件的某个函数,最后处理完将
 返回值再次交给wsgi,wsgi将返回值进行打包,打包成uwsgi能够接收的格式,
 uwsgi接收wsgi发送的请求,并转发给nginx,nginx最终将返回值返回给浏览器。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值