使用 Gunicorn(没有 nginx)直接使用 AWS ELB 有什么缺点?
What are the disadvantages of using AWS ELB directly with Gunicorn (no nginx)?
我在 Google 上发现的典型设置到 运行 AWS 上的 django 应用程序都建议像
这样的设置
ELB -> nginx -> gunicorn -> django
我想知道为什么这里真的需要 nginx 部分? ELB 还不够代理吗?
在我们的例子中,我们在 ECS 上的单个 docker 容器中 运行 设置多个 Gunicorn/django 实例。
如果没有 Nginx,它会工作得很好,而且您仍然可以免受大多数 DDOS 攻击,这些攻击可能会导致暴露的 gunicorn 服务器瘫痪。
我只能看到 Nginx 有助于将其添加到堆栈中,前提是它将为您的静态文件提供服务。但是,通过 S3(+ 云端作为奖励)提供静态文件要好得多,因为它具有高可用性和可靠性。
来源:
http://docs.gunicorn.org/en/latest/deploy.html#nginx-configuration
我必须进行大量搜索才能获得令人满意的答案:
- ELB 不会让您免受 DDoS 攻击,它更像是一个通用负载均衡器。
- ELB 直接发送 传入请求到 Gunicorn 服务器。它在将请求转发给 Gunicorn 之前没有收到完整的请求,即,如果由于来自客户端的互联网连接不良或其他任何原因,来自请求的 headers/body 来得很慢,那么 Gunicorn 服务器将等待请求在开始处理请求之前完成。通常,允许同一台服务器同时作为 Web 服务器和应用程序服务器是一种不好的做法,因为这会占用应用程序服务器(Gunicorn)的资源。
- Nginx 还帮助提供静态文件 和 GZIP 压缩,从而使来自 client/server.
的 sending/receiving 数据更快
另外,即使在Gunicorn的文档中,也建议在它前面使用Nginx。
我在 Google 上发现的典型设置到 运行 AWS 上的 django 应用程序都建议像
这样的设置ELB -> nginx -> gunicorn -> django
我想知道为什么这里真的需要 nginx 部分? ELB 还不够代理吗?
在我们的例子中,我们在 ECS 上的单个 docker 容器中 运行 设置多个 Gunicorn/django 实例。
如果没有 Nginx,它会工作得很好,而且您仍然可以免受大多数 DDOS 攻击,这些攻击可能会导致暴露的 gunicorn 服务器瘫痪。
我只能看到 Nginx 有助于将其添加到堆栈中,前提是它将为您的静态文件提供服务。但是,通过 S3(+ 云端作为奖励)提供静态文件要好得多,因为它具有高可用性和可靠性。
来源: http://docs.gunicorn.org/en/latest/deploy.html#nginx-configuration
我必须进行大量搜索才能获得令人满意的答案:
- ELB 不会让您免受 DDoS 攻击,它更像是一个通用负载均衡器。
- ELB 直接发送 传入请求到 Gunicorn 服务器。它在将请求转发给 Gunicorn 之前没有收到完整的请求,即,如果由于来自客户端的互联网连接不良或其他任何原因,来自请求的 headers/body 来得很慢,那么 Gunicorn 服务器将等待请求在开始处理请求之前完成。通常,允许同一台服务器同时作为 Web 服务器和应用程序服务器是一种不好的做法,因为这会占用应用程序服务器(Gunicorn)的资源。
- Nginx 还帮助提供静态文件 和 GZIP 压缩,从而使来自 client/server. 的 sending/receiving 数据更快
另外,即使在Gunicorn的文档中,也建议在它前面使用Nginx。