【问题标题】:Difference between Gunicorn and NginxGunicorn 和 Nginx 的区别
【发布时间】:2012-05-30 18:04:10
【问题描述】:

这是一个初学者问题,但我无法理解 Gunicorn 和 Nginx 之间的抽象。我不是在寻找详细的答案,只是在高层次上,每个人扮演的角色是什么?他们如何互动?

【问题讨论】:

    标签: nginx gunicorn


    【解决方案1】:

    Nginx 是一个 Web 服务器和反向代理,负责提供静态服务 内容、gzip 压缩、ssl、proxy_buffers 和其他 HTTP 内容 而 gunicorn 是一个 Python HTTP 服务器,它与两个 nginx 接口 以及您实际的 python web-app 代码来提供动态内容。

    以下是 HTTP 请求生命周期的高级概述 突出他们的角色。我假设您有一台服务器运行 具有三个主要流程的简单应用。

    Nginx:在端口 80 上侦听来自 互联网。

    Gunicorn:在另一个端口(8000 是流行的端口)上侦听 HTTP 来自 Nginx 的请求。 Gunicorn 已使用您的 Python Web 应用程序进行配置。

    【讨论】:

      【解决方案2】:

      根据Gunicorn's deploy doc,我的理解是您使用 Nginx 作为 Gunicorn 的代理服务器。

      由于 Gunicorn 是从 Ruby's Unicorn 移植的,我假设 Unicorn 的限制和规范也适用于 Gunicorn:

      Unicorn 是用于 Rack 应用程序的 HTTP 服务器,旨在仅提供服务 低延迟、高带宽连接上的快速客户端,并采取 Unix/类 Unix 内核中的功能优势。慢客户端应该 只能通过放置能够完全缓冲的反向代理来提供服务 Unicorn 和慢速客户端之间的请求和响应。

      Gunicorn's deploy doc 说了很多同样的话:

      尽管有许多 HTTP 代理可用,但我们强烈建议 你使用 Nginx。如果您选择另一个代理服务器,您需要 确保在使用默认 Gunicorn 时缓冲慢速客户端 工作人员。如果没有这种缓冲,Gunicorn 将很容易受到影响 拒绝服务攻击。

      所以 Gunicorn 服务于快速、低延迟的高带宽客户端,而 Nginx 服务于其余部分。

      【讨论】:

        猜你喜欢
        • 2012-10-24
        • 2016-04-24
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 2018-11-20
        • 2018-02-16
        • 2019-05-06
        • 2013-03-22
        相关资源
        最近更新 更多