Leo Wang's Notepad

uwsgi nginx

有了uwsgi为什么还需要nginx

在python的web开发中,我用flask框架写了一个小程序,部署的时候,我用到了uwsgi来做容器。

在学习uwsgi部署的过程中,另一个关键词nginx频繁的跳出来。这两者通常是成对出现的。

你有没有和我一样的困惑,为什么有了uwsgi我们还需要nginx?

我是说,既然uwsgi能够展现你想要的内容,那nginx存在的意义在哪里?

首先,nginx是一个HTTP 服务器。如果你是学Java出身的,说到HTTP服务器你应该会想到Apache。

类似的uwsgi可以比喻为tomcat。

nginx官方网站上给出的一张图片很好的揭示了nginx的角色。

architecture-nginx

我所理解的nginx的主要功能,有以下几个部分:

  • nginx处理静态内容请求更专业、快速
  • nginx可以缓存请求。如果让uwsgi来直接接受请求的话,uwsgi需要花费大量的时间来等待request,这本身对web应用所在的主机是很大的资源浪费。
  • 分发请求。假如你有好几个web应用,分布在不同的主机上,nginx可以把请求分发到各自的web应用来进行处理。这一特点是nginx可以用来做负载均衡器。
  • 相比web容器,nginx的漏洞更少更安全
  • nginx可以更好的处理HTTPS
  • nginx有网关(gateway)的作用,可以过滤访问IP。

 …