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

时间:2017-01-07 10:47:57

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

我在存储桶client1.examplecorp.com内的S3中有一个静态网站,其中包含相应的R53记录client1.examplecorp.com. A ALIAS s3-website-us-east-1.amazonaws.com.

我希望我的客户端(client1.com)webadmin为子域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 DomainVirtual Hosting of Buckets以及this SO post的AWS文档。

我觉得我在寻找的是How to redirect domains using Amazon Web Services

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

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

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

我对解释它没有坚定的把握,所以请耐心等待。

2 个答案:

答案 0 :(得分:5)

以下是两种可能的解决方案:

在这些示例中,客户端的主域名是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,因为它们的主机名不是区域apex主机名(“裸域”)。要将裸域与任一解决方案一起使用,需要使用Route 53,但这不适用于此。

答案 1 :(得分:0)

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

你要使用client1.corporation.com,你必须使用Route 53,对吧? 您也无法在其他NameServer中配置某些DNS记录并执行相同操作。

同样,对于您使用quotes.client1.com指向S3存储桶,您还需要请求客户端使用Route 53。

希望有所帮助 干杯!