55

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

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

4

2 回答 2

77

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

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

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

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

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

于 2012-11-01T18:18:13.687 回答
4

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的整体思路

于 2019-05-11T18:36:33.190 回答