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

标签 amazon-web-services amazon-s3 dns amazon-route53

我有一个静态网站托管在存储桶 client1.examplecorp.com 内的 S3 中,并带有相应的 R53 记录 client1.examplecorp.com。别名 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 的 AWS 文档, Virtual Hosting of Buckets还有this SO post .

我有一种感觉,我正在搜索的内容在此处进行了描述 How to redirect domains using Amazon Web Services .

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

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

最后,它会完全透明吗?这意味着 client1.examplecorp.com 不会显示给最终用户?

我没有牢牢地解释它,所以请多多包涵。

最佳答案

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

在这些示例中,客户端的主域是 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.

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

选项 2:

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

存储桶名称:

example-bucket

网站端点:

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

新的 CloudFront 分发系统分配的主机名:

djozxyqkexample.cloudfront.net

CloudFront Origin(不要从下拉列表中选择存储桶名称,输入 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: 头到达时识别它。

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

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


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

关于amazon-web-services - 将自定义子域重定向到托管在 AWS S3 存储桶中的静态网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41520573/

相关文章:

c# - 如何使用 C# 复制 AmazonS3 存储桶中的文件夹?

nginx - 如何设置一个简单的包含 docker 的反向代理(nginx)服务器?

docker - Nginx Plus无法使用Docker嵌入式DNS服务器解析服务

amazon-web-services - 使用静态列表作为 Cloudformation 参数

amazon-web-services - 将 Serverless 框架转换为 Typescript CDK - API 网关身份验证

amazon-web-services - 写入S3存储桶中的文件

ruby-on-rails - Ruby on Rails 自定义域

mysql - EC2操作的明智替代解决方案

amazon-web-services - 如何在 AWS Data Pipeline 的控制台中创建参数

javascript - 限制 Web 应用程序的 amazon s3 访问?