Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

python做web开发时uWSGI和nginx的作用和区别



在web开发方面,我主要用python + django或者+ flask,在部署时我用到了uwsgi和nginx。

为什么这两个一起用?为什么都在推荐这个组合?感觉有些重合啊。不过在查阅资料和实际使用中,也发现了两者的区别和公用的好处。

uWSGI如其名,它是一个实现了uwsgi和WSGI协议的web服务器,可以响应python的web请求,处理request和response。

nginx是一个高性能的http和反向代理的web服务器,类似apache。

当然,像django之类的本身也带有一个http server,不过都是用来调试的,毕竟性能差。于是用uWSGI代替了django的内置server,在处理request时会有效得多。

直接用uWSGI时也是可以访问的,但uWSGI在并发和资源处理上不太理想,于是nginx承担了这方面的责任。

它们一起用就是双重保障,在性能功能安全上都能顾及。

uWSGI:
 - 处理动态请求
 - 支持多进程,发挥多核效能
 - 提高并发请求的处理能力

nginx:
 - 处理静态资源
 - 反向代理和负载均衡,提升安全性和性能表现


若是uWSGI+django,uWSGI则是一个服务器;若是nginx+uWSGI+django,uWSGI则是一个中间件。
如果有多台web服务器时,增加一个反向代理会比较有用;如果是单个web服务器,用不用nginx都可以,不过还是用上吧,没坏处。

整个过程可以是:通过反向代理服务器将http请求分发给web服务器,同时它也直接处理静态资源,web服务器关注在动态请求上,再由web服务器将请求发给web app处理。

下一篇:  在centos上安装python3和配置虚拟环境
上一篇:  openstf支持ios设备和问题解决

共有1条评论

添加评论

xipikev356@eimatro.com
2023年8月7日 20:29
8888888888888888888888