关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

Nginx Gunicorn在服务器中分别起什么作用

发布时间:2021-12-31 20:18:41

大部分人在gunicorn前面部署一层nginx的时候也的确没有想过为什么,他们只是觉得这样显得他们比较专业,而且幻想着加了一层nginx反向代理之后性能会有提升,恕我直言,请你们带上脑子,一个单纯的串联结构怎么可能提升性能?请好好想一想这个问题好吗?

在前面增加一层nginx的情况主要是:

负载均衡。tornado之类的框架只支持单核,所以多进程部署需要反向负载均衡。gunicorn本身就是多进程其实不需要

静态文件支持,经过配置之后,nginx可以直接处理静态文件请求而不用经过Python服务器,Python服务器也可以返回特殊的http头将请求rewrite到静态文件。我说的是经过配置之后,你配置了吗?

抗并发压力。虽然不能提升qps,但是多一层前端,的确可以吸收一些瞬时的并发请求,让nginx先保持住连接,然后后端慢慢消化,但说实话这种情况下服务体验已经很糟糕了。但的确比服务挂掉强一些。

rewrite之类的其他功能。配置了才有,配了吗?

怕gunicorn的http解析有bug。这个姑且算有点道理,不过加一层负载均衡不一定能解决问题。

主要来说加一层可以给你一些你很可能不会去配置的额外的功能,这样多少会给运维人员一些安慰,反正也不会有什么性能损耗,也就是说不太会有坏处,所以大家都假装自己很懂地加了一层反向负载均衡。其实不见得就没有坏处,比如说可能会获取不到对端IP地址(变成127.0.0.1了),或者可能会被X-Forwarded-For欺骗。

不过另一个角度来说,如果你的业务早晚会上规模,早晚有一天会用上反向负载均衡,提前配一个也对,不过应该用两台服务器,配在不同服务器上。内部服务的情况下如果压力不太大,很多其实都是gunicorn裸跑的,Python不是PHP,不用非得加个前端。


/template/Home/Zkeys5/PC/Static
注册即送1000元现金券