这是一个初学者的问题,但我无法理解Gunicorn和Nginx之间的抽象概念。我不是在寻找一个详细的答案,只是在高层次上每个人扮演的角色是什么?他们如何互动?
答案 0 :(得分:3)
Per 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为其他客户提供服务。
答案 1 :(得分:0)
Nginx是Web服务器和反向代理,负责提供静态 内容,gzip压缩,ssl,proxy_buffers和其他HTTP内容 而gunicorn是同时与nginx交互的Python HTTP服务器 以及实际的python网络应用代码来提供动态内容。
这是HTTP请求生命周期的高级概述 突出他们的角色。我假设您有一台服务器正在运行 具有三个主要过程的简单应用。
Nginx :在端口80上侦听来自 互联网。
Gunicorn :在另一个端口(流行的8000端口)上侦听HTTP 来自Nginx的请求。使用您的python网络应用程序配置了Gunicorn。