将自定义子域重定向到 AWS S3 存储桶中托管的静态网站

Redirecting a custom subdomain to a static website hosted in AWS S3 bucket

我在存储桶 client1.examplecorp.com 中的 S3 中托管了一个静态网站,并带有相应的 R53 记录 client1.examplecorp.com. A ALIAS s3-website-us-east-1.amazonaws.com.

我希望我的客户 (client1.com) 的网络管理员为子域 quotes.client1.com 创建一个 dns 记录,它将指向 AWS(client1.com 不使用 R53)。

它应该指向 client1.examplecorp.com 吗?

或直接在 S3 存储桶端点?

概念是,最终用户只会看到 quotes.client1.com 子域,而不知道 client1.examplecorp.com

我希望我描述得足够好...

我已阅读有关 Setting Up a Static Website Using a Custom Domain , Virtual Hosting of Buckets and also this SO post 的 AWS 文档。

我感觉这里描述了我要搜索的内容How to redirect domains using Amazon Web Services

我只是不明白客户端的注册商如何通过添加 4 个域名服务器将特定子域(引号。client1.com)的流量重定向到 client1.examplecorp.com。

此外,重定向会只影响这个子域还是整个 client1.com .

最后,会完全透明吗?也就是说,client1.examplecorp.com 不会显示给最终用户?

我解释的不是很清楚,请多多包涵。

不幸的是,我认为这是不可能的。在这种情况下,我假设您拥有公司域。

要使用 client1.corporation.com,您必须使用 53 号公路,对吗? 您也无法在您的其他名称服务器中配置某些 DNS 记录并执行相同的操作。

同样,对于你使用引号client1.com指向S3 bucket,你也需要询问客户端使用Route 53

希望对您有所帮助 干杯!

这里有两种可能的解决方案:

在这些示例中,客户端的主域是 example.com。

选项 1:

创建一个名称与所需主机名相同的存储桶,并让客户端创建一个指向该存储桶的网站端点的 CNAME 记录。

存储桶名称:

quotes.example.com

网站端点(假设 us-east-1 区域):

quotes.example.com.s3-website-us-east-1.amazonaws.com.

客户端 DNS:

quotes.example.com. CNAME quotes.example.com.s3-website-us-east-1.example.com.

客户端不需要为其 DNS 使用 Route 53,但存储桶名称必须与他们指向存储桶的主机名完全匹配,因为这就是 S3 的工作方式。

选项 2:

通过 CloudFront 发送流量。在这种情况下,存储桶名称无关紧要,因为 CloudFront 会将其转换为正确的存储桶名称。

存储桶名称:

example-bucket

网站端点:

example-bucket.s3-website-us-east-1.amazonaws.com

新 CloudFront 分发 system-assigned 主机名:

djozxyqkexample.cloudfront.net

CloudFront Origin(做 not select 下拉列表中的存储桶名称,输入 S3 网站主机名,如 S3 控制台中所示:

example-bucket.s3-website-us-east-1.amazonaws.com

CloudFront 备用域名:

quotes.example.com

客户端创建 DNS CNAME

quotes.example.com. CNAME djozxyqkexample.cloudfront.net.

此解决方案也不要求客户端使用 Route 53,而且——重要的是——存储桶名称不需要与主机名匹配——主机名只需要配置为 CloudFront 备用域名,因此CloudFront 在到达时识别 Host: header。

如果您想为多个站点重复使用同一个存储桶,您可以将更多主机名添加到 CloudFront 备用域名设置中,或者您可以创建指向同一个存储桶的多个分配。

另请注意,在 S3 之前使用 CloudFront 实际上是免费的,因为当您使用 CloudFront 时,S3 将不再向您收取带宽费用——相反,CloudFront 将按 CloudFront 费率向您收取带宽费用,这通常是略低于 S3 速率。


在上述两种情况下,客户端都不需要使用 Route 53,因为他们所讨论的主机名不是区域顶点主机名("naked domain")。要在任一解决方案中使用裸域,都需要 Route 53,但这在此处不适用。