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

时间:2012-11-01 18:00:11

标签: django nginx gunicorn

许多基于Amazon EC2的Django应用程序部署使用HTTP服务器NGINX和Gunicorn。

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

2 个答案:

答案 0 :(得分:71)

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

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

  

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

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

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

答案 1 :(得分:0)

Nginx和Gunicorn未在并行应用中使用。

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

下图显示了nginx和Gunicorn如何相互作用。

Nginx and Gunicorn Overall idea of nginx and Gunicorn