使用AWS ELB直接使用Gunicorn(没有nginx)有什么缺点?

Ale*_*lex 9 django reverse-proxy amazon-web-services gunicorn amazon-elb

我在谷歌上发现的在AWS上运行django应用程序的典型设置都建议设置如下

ELB - > nginx - > gunicorn - > django

我想知道为什么这里真的需要nginx部分?ELB不足以代理吗?

在我们的例子中,我们在ECS上的各个docker容器中运行多个Gunicorn/django实例.

mos*_*azh 7

如果没有Nginx,它可以正常工作,你仍然可以安全地避免大多数可能导致暴露的gunicorn服务器崩溃的DDOS攻击.

我只能看到Nginx有助于添加到堆栈中,如果它将为您的静态文件提供服务.但是,通过S3(+ cloudfront作为奖励)提供静态文件要好得多,因为它具有高可用性和可靠性.

来源:http : //docs.gunicorn.org/en/latest/deploy.html#nginx-configuration /sf/answers/896079831/

  • 如果客户端很慢,它会使你的 gunicorn 服务器变慢。Nginx 使 gunicorn 可以轻松处理慢速客户端并仅发送完全收到的请求(所有 TCP 数据包),不确定 ELB 是否这样做。 (2认同)

Shi*_*gga 5

我必须进行大量搜索才能得到满意的答案:

  1. ELB并不能帮助您免受 DDoS 攻击,它更像是一个通用负载均衡器。
  2. ELB直接将传入请求发送到Gunicorn服务器。在将请求转发到 Gunicorn 之前,它不会收到完整的请求,即,如果由于客户端的互联网连接不良或任何其他原因,请求的标头/正文传输缓慢,则 Gunicorn 服务器将等待请求完成在开始处理请求之前。一般来说,允许同一台服务器作为 Web 服务器和应用程序服务器是一个不好的做法,因为这会占用应用程序服务器(Gunicorn)的资源。
  3. Nginx 还帮助提供静态文件和 GZIP 压缩,从而加快从客户端/服务器发送/接收数据的速度。

另外,即使在Gunicorn的文档中,也建议在其前面使用Nginx。