【问题标题】:What is the purpose of NGINX and Gunicorn running in parallel?NGINX 和 Gunicorn 并行运行的目的是什么?
【发布时间】:2012-10-22 09:12:37
【问题描述】:

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

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

【问题讨论】:

  • 参见this question,它比蒂米的回答更详细。
  • @BurhanKhalid 谢谢你,帮助了

标签: django nginx gunicorn


【解决方案1】:

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

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

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

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

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

【讨论】:

  • @Timmy O'Mahony,wsgi 文件(创建 django 项目时出现)和 gunicorn 有什么区别
  • This answer 深入了解 nginx 的细节和好处。
【解决方案2】:

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 的交互方式。

【讨论】:

    猜你喜欢
    • 2019-06-19
    • 2012-11-19
    • 2012-02-16
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2021-07-08
    • 2012-11-19
    相关资源
    最近更新 更多