Mrli
别装作很努力,
因为结局不会陪你演戏。
Contacts:
QQ博客园

WSGI uWSGI uwsgi及nginx说明

2019/09/15 Python 后端 计算机网络知识
Word count: 1,104 | Reading time: 4min

客户端发出请求==>服务器接受、处理请求与响应 的过程示意图

过程

1. WSGI:

全称是Web Server Gateway Interface(服务器网关接口)WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范( 是一个**Web服务器(如nginx)应用服务器(如uWSGI)**通信的一种规范(协议)==> 可以理解为服务器与应用程序通信的接口规范要求),描述web server如何与web application通信的规范。serverapplication的规范在PEP 3333中有具体描述。因为WSGI没有官方的实现, 所以WSGI更像一个协议,只要遵照这些协议,都可以在任何服务器(Server)上运行

2.uwsgi:

WSGI一样是一种通信协议,是uWSGI服务器的独占协议,用于定义传输信息的类型(type of information),每一个uwsgi packet4byte为传输信息类型的描述,与WSGI协议是两种不同的协议。该协议据说性能非常高,是fcgi协议的10倍快;而且内存占用率低,为mod_wsgi的一半左右,同时它还支持多应用的管理及应用的性能监控

3.uWSGI:

是一个web服务器,而且也可以当做中间件。它实现了WSGI协议、uwsgi协议、http协议等。在生产环境中使用uWSGI作为python web的服务器,可以用来托管 Python WSGI应用。它具有应用服务器,代理,进程管理及应用监控等功能(但可以把看作是一个应用程序,帮助我们实现WSGI协议),这样我们可以不再关注网络通信的底层实现,将精力更多放在处理HTTP请求数据,返回HTML。

4.uWSGI+nginx

综上所述可以看出uWSGI可以直接当做服务器,而为了进一步的并发提升就需要加上nginx(提高负载均衡)

▲.当uWSGI+nginx使用时,nginx作为web服务器,而uWSGI作为中间件(这边不一定正确,个人理解)

uWSGI不足的地方:
  • uWIGS也可以返回静态文件(css,js,img…),但是很笨拙,所以更好的做法是用反向代理服务器(比如Nginx)来处理此类请求,减轻应用服务器的负载,获得更好的性能。

    • 利用uWIGS可以是我们的web应用得到更强的并发能力,uWIGS也可以返回静态文件(css,js,img…),但是很笨拙,一般静态文件都交由Nginx进行传输,所以配置中一般不配置static-map,如果直接由uWIGS接受HTTP请求则需要设置http:xxxx,如果只需要与反向代理服务器进行交互则只需要接受socket,uWIGS与Nginx交互相当于两个进程间交互,一般使用的是.sock文件或者指定端口接受socket。指定端口时再使用浏览器访问相应端口,uWIGS会提示skip,跳过该HTTP请求。
  • 同时还有的是uWSGI本身的负载均衡没有nginx牛逼。所以阉割掉不用。

5.Nginx是一个Http和反向代理服务器

什么是反向代理服务器呢?

▲正向的就是由浏览器主动的想代理服务器发出请求,经代理服务器做出处理后再转给目标服务器
▲反向的就是不管浏览器同不同意,请求都会经过代理服务器处理再发给目标服务器

这其中的区别就是必须经过Nginx反向代理服务器,这就有了使用Nginx的几个好处:

  • 安全:不管什么请求都要经过代理服务器,这样就避免了外部程序直接攻击web服务器

  • 负载均衡:根据请求情况和服务器负载情况,将请求分配给不同的web服务器,保证服务器性能

  • 提高web服务器的IO性能:这个我也没看懂,总结来说就是请求从客户端传到web服务器是需要时间的,传递多长时间就会让这个进程阻塞多长时间,而通过反向代理,就可以在反向代理这完整接受请求,然后再传给web服务器,从而保证服务器性能,而且有的一些简单的事情(比如静态文件)可以直接由反向代理处理,不经过web服务器

nginx


总结

总结

Author: Mrli

Link: https://nymrli.top/2018/11/02/WSGI-uWSGI-uwsgi及nginx说明/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
高科GSWIFI江苏破解教程
NextPost >
apt-get update无法连接
CATALOG
  1. 1. 客户端发出请求==>服务器接受、处理请求与响应 的过程示意图
  2. 2. 1. WSGI:
  3. 3. 2.uwsgi:
  4. 4. 3.uWSGI:
  5. 5. 4.uWSGI+nginx
    1. 5.1. uWSGI不足的地方:
  6. 6. 5.Nginx是一个Http和反向代理服务器
  7. 7. 总结