我有一个静态网站托管在存储桶 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/