NGINX和Gunicorn并行运行的目的是什么?

noa*_*ale 52 django nginx gunicorn

通过亚马逊EC2的许多Django应用程序部署使用HTTP服务器NGINX和Gunicorn.

我想知道他们实际上做了什么以及为什么两者并行使用.并行运行它们的目的是什么?

Tim*_*ony 71

它们不是并行使用的.NGINX是一个反向代理.这是排在第一位的.它接受传入的连接并决定它们下一步应该去哪里.它(通常)也提供静态媒体,如CSS,JS和图像.它还可以执行其他操作,例如通过SSL加密,缓存等.

Gunicorn是下一层,是一个应用服务器.NGINX看到传入连接是为了www.domain.com并且知道(通过配置文件)它应该将该连接传递给Gunicorn.Gunicorn是一个WSGI服务器,基本上是:

Web服务器与Web应用程序或框架之间的简单通用接口

Gunicorn的工作是管理和运行Django实例(类似于django-admin runserver在开发期间使用)

与此设置的对比是将Apache与mod_wsgi模块一起使用.在这种情况下,应用程序服务器实际上是Apache的一部分,作为模块运行.

  • [这个答案](http://serverfault.com/questions/220046/why-is-setting-nginx-as-a-reverse-proxy-a-good-idea)深入探讨了nginx的细节和优势. (3认同)

Thu*_*pal 5

Nginx 和 Gunicorn 不并行使用。

  • Gunicorn 是一种 Web 服务器网关接口 (WSGI) 服务器实现,通常用于运行 Python Web 应用程序。
  • NGINX 是一个免费、开源、高性能的 HTTP 服务器和反向代理,以及 IMAP/POP3 代理服务器。
  • Nginx 负责提供静态内容、gzip 压缩、ssl、proxy_buffers 和其他 HTTP 内容。而 Gunicorn 是一个 Python HTTP 服务器,它与 nginx 和实际的 Python Web 应用程序代码交互以提供动态内容。

下图显示了 nginx 和 Gunicorn 如何交互。

Nginx 和 Gunicornnginx和Gunicorn的总体思路