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

Kos*_*ris 2 dns amazon-s3 amazon-web-services amazon-route53

我有一个静态网站在S3内部托管,client1.examplecorp.com具有相应的R53记录client1.examplecorp.com. A ALIAS s3-website-us-east-1.amazonaws.com.

我希望我的客户端(client1.com)webadmin为子域创建一个dns记录,该记录quotes.client1.com将指向AWS(client1.com不使用R53).

应该指向client1.examplecorp.com吗?

或者直接在S3桶端点?

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

我希望我能够很好地描述它......

我已阅读有关AWS文档设置静态网站使用自定义域,桶的虚拟主机,也该SO发布.

我有一种感觉,我在这里描述的是如何使用Amazon Web Services重定向域.

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

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

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

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

Mic*_*bot 6

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

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

选项1:

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

水桶名称:

quotes.example.com
Run Code Online (Sandbox Code Playgroud)

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

quotes.example.com.s3-website-us-east-1.amazonaws.com.
Run Code Online (Sandbox Code Playgroud)

客户端DNS:

quotes.example.com. CNAME quotes.example.com.s3-website-us-east-1.example.com.
Run Code Online (Sandbox Code Playgroud)

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

选项2:

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

水桶名称:

example-bucket
Run Code Online (Sandbox Code Playgroud)

网站端点:

example-bucket.s3-website-us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

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

djozxyqkexample.cloudfront.net
Run Code Online (Sandbox Code Playgroud)

CloudFront的起源(做从下拉列表中选择存储桶名称,类型,如S3控制台中显示的S3网站主机名):

example-bucket.s3-website-us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

CloudFront备用域名:

quotes.example.com
Run Code Online (Sandbox Code Playgroud)

客户端创建DNS CNAME

quotes.example.com. CNAME djozxyqkexample.cloudfront.net.
Run Code Online (Sandbox Code Playgroud)

此解决方案也不要求客户端使用Route 53,并且 - 重要的是 - 存储桶名称不需要与主机名匹配 - 主机名只需配置为CloudFront备用域名,以便CloudFront识别Host:标头当它到来时.

如果要为多个站点重用相同的存储桶,可以向CloudFront备用域名设置添加更多主机名,也可以创建指向同一存储桶的多个分发.

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


在上述两种情况下,客户端都不需要使用Route 53,因为它们的主机名不是区域apex主机名("裸域").要将裸域与任一解决方案一起使用,需要Route 53,但这不适用于此处.