具有相同域名的 Webserver 和 Cloudfront 分发

Posted

技术标签:

【中文标题】具有相同域名的 Webserver 和 Cloudfront 分发【英文标题】:Webserver and Cloudfront distribution with the same domain name 【发布时间】:2021-12-02 09:06:18 【问题描述】:

我们有一个在 example.com 上运行的 (django) wep 应用程序,我们希望通过来自同一域的云端在 s3 上提供一些静态资产。因此,如果我们有一个包含关键 assets/img.jpg 的文件,我们将能够通过 example.com/assets/img.jpg 访问它。

我们一直在尝试使用这个guide,但只能让它与子域一起工作以访问 cloudfront 所以 static.example.com/assets/img.jpg

我们遇到的问题是 DNS 设置,已经有一个 CNAME for example.com(网络应用程序)将流量路由到服务器,但我们无法创建具有相同名称的第二个条目 example .com 到云端分发。

【问题讨论】:

【参考方案1】:

为此,请转到 Cloudfront 发行版的配置。

从那里,您需要创建另一个指向该 S3 存储桶的“来源”,然后为“/assets/*”路径创建一个“行为”,以将流量发送到该 S3 存储桶。

【讨论】:

非常感谢您的回复,这似乎可行,但在 DNS 设置中遇到问题,为 example.com 创建两个 CNAME 条目,一个到网络服务器,一个到云端。 您不需要 2 条 cname 记录,只需要一条 A 记录到云端分发 url。您的 Web 应用程序和您的 s3 存储桶都应该是默认行为将流量路由到您的 Web 服务器(在 EC2 中运行?)的源,您将为 /assets/* 路径创建的其他行为会将流量发送到您的 S3 源。 我尝试了这个但不太确定如何实现,我有一个 A(别名)记录,例如 example.com 指向云端分发和 /assets/* 的分发行为指向 s3 存储桶,但是我将如何为具有相同 example.com 域的应用程序创建一个源,Route 53 拒绝这个。 您不需要多个记录,您的 Web 服务器和您的 s3 存储桶都应该是您的云端分发中的来源,而不是 route53 中的单独记录。我很困惑您的问题出在哪里,您正在描述我为 3 个单独的站点设置的设置,其中 2 个是 rails 应用程序,另一个是 python 应用程序,它们的资产都存储在 S3 存储桶中。了解 Cloudfront 是一个反向代理及其工作原理非常重要。 啊,我看到了我的错误,我很困惑在源域中放置什么,以便插入我的 EC2 的公共 IPv4 DNS 条目的 Web 应用程序解决了这个问题。我要去example.com查看并使用该应用程序。但是我无法访问我在存储桶中放置了 test.txt 文件的 s3 文件,然后转到 example.com/assets/test.txt 并得到了 404(似乎正在通过应用程序运行,因为它正在检查url conf 那里)。

以上是关于具有相同域名的 Webserver 和 Cloudfront 分发的主要内容,如果未能解决你的问题,请参考以下文章

Apache2-需要多个具有相同域的项目在域名后使用不同的路径

如何在 Oracle Analytics Cloud 专业版中实现具有相同 id 的列中条目的字符串连接?

Spring Cloud教程加密和解密

Node.js - 具有 WebSocket 代理和 SSL 支持的良好 WebServer?

单点登录(两种单点登录类型:SSO/CAS相同一级域名的SSO)

CLOUD 03:hadoop