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处理。
上一篇:
openstf支持ios设备和问题解决
共有1条评论
添加评论
xipikev356@eimatro.com
2023年8月7日 20:298888888888888888888888