2

我正在 AWS 中构建一个环境来托管 django 应用程序。我想弄清楚我是否应该使用 nginx 作为构建的一部分。

出于示例/比较目的,我在下面列出了一些不同的环境。所有环境都使用 AWS ALB。

环境 1

ALB -> dockercontainer 运行 django

  • +使用内置的 django 网络服务器,静态文件工作
  • -inbuilt django webserver 不用于生产用途

环境 2

ALB -> dockercontainer 运行 django/gunicorn

  • +使用 gunicorn(不是 django 网络服务器)
  • -静态文件不工作

环境 3

ALB -> dockercontainer 运行 django/gunicorn + nginx

注意:我还没有测试过这个配置。

  • +使用 gunicorn(不是 django 网络服务器)
  • +使用 nginx
  • 静态文件应该可以工作

我阅读了这篇stackoverflow 帖子并了解了 gunicorn 与 nginx 的不同角色。

一位同事告诉我,我只需要 ENV 2,我应该能够用它来提供静态文件,ALB 提供了与 NGINX 类似的功能。这个对吗?

4

1 回答 1

3

澄清一下——“ALB”代表 Application Load Balancer,它与旧的 Elastic Load Balancer 的区别在于可以基于 URI 路由流量。

但是,无论您指的是哪个负载均衡器,我相信您都需要 nginx,因为 AWS 负载均衡器不提供任何文件服务功能。如果您的静态文件具有一致的 URI 模式,则您可能能够使用 ALB 从 S3 或 CloudFront 提供静态文件。

于 2018-05-23T18:20:23.387 回答