使用 amazon s3 与 nginx 提供静态文件服务

使用 amazon s3 与 nginx 提供静态文件服务

假设我有一个 django 应用程序

使用 s3 提供静态文件或在 ec2 实例上设置 nginx 服务器是否更好(从性能角度来看)?

答案1

Nginx 将更快地处理 CSS、导航图像等网站资产。如果客户端浏览器已经为动态页面建立了打开的连接,并且设置了保持连接,它将使用相同的连接。

您现在可以将 CloudFront 与 EC2 托管内容备份,因此 S3 不再是该级别的要求。此外,您还可以使用 CloudFront 和 django 生成但不经常更改的内容。您可以使用 nginx 的内置缓存来获取半动态内容。如果您无论如何都要为 django 部分运行服务器,那么额外的工作并不多。

如果您需要托管的文件较大,那么 S3 会变得更好,因为较小的 EC2 实例上的磁盘性能并不理想。

最后,除非您每秒要处理数十个请求,否则这两个选项将会非常接近,以至于很难衡量差异。

答案2

有很多因素会影响这一点,但如果可以的话,我建议直接从 S3 提供服务。性能至少与使用 nginx 一样好,甚至可能更好,并且它为您提供了一条简单的途径,以便在将来需要时开始使用 AWS 的 CloudFront CDN。

答案3

正如 Coeus Blue 上面提到的,这取决于您的用例场景。如果您的网站需要尽快加载,则所有资源都应位于同一域中(子域是分开的),因为 DNS 查询在非常快的连接上可能需要 1-2 毫秒,而在连接不良的情况下则需要 40-50 毫秒。

DNS 调用通常会被缓存,因此在任何具有多个外部资源的站点上,这不会因为 DNS 查找而对速度造成巨大影响。

但是,使用 nginx/Apache 提供相同文件时,S3 可能比 EC2 实例更快。S3 存储比 EBS 便宜(对于 nginx/Apache Web 服务器集群,您需要 EFS),如果我没记错的话,S3 互联网出站传输比 EC2 出站传输便宜

相关内容