【问题标题】:Redirecting a custom subdomain to a static website hosted in AWS S3 bucket将自定义子域重定向到托管在 AWS S3 存储桶中的静态网站
【发布时间】:2017-05-22 02:15:30
【问题描述】:

我在存储桶 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 和 this SO post 的 AWS 文档。

我感觉我正在搜索的内容在 How to redirect domains using Amazon Web Services 中有所描述。

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

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

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

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

【问题讨论】:

  • 请使用为文档保留的标准域example.com、example.net 和example.org 重写(编辑)此内容。不宜以他人的域名为例。另请注意,您似乎交替使用了“公司”和“企业”,在问题进行到一半时切换了。
  • 我对其进行了编辑并进行了适当的更正。我以为我使用了非常通用的域名,但经过一番谷歌搜索后我得到了纠正。无意伤害!

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


【解决方案1】:

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

在这些示例中,客户端的主域是 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 分发系统分配的主机名:

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,但这不适用于此处。

【讨论】:

  • 我尝试了选项 1,但连接一直超时。可能是什么原因?
  • @TheWahome 选项 1 不适用于 HTTPS。也许这就是问题所在?
【解决方案2】:

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

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

同样,你要使用quotes.client1.com指向S3存储桶,你也需要要求客户端使用Route 53。

希望有所帮助 干杯!

【讨论】:

  • 感谢卡兰的回复。我确实拥有corporate.com 域,并且已将Route53 用作DNS 注册商。 client1.corporation.com 子域由我设置,用于区分和管理不同客户的静态网站。我可以要求 client1 的 webadmin 对其 DNS 设置进行特定更改。但是,应该是什么更改/编辑/添加,以便特定子域 [quotes.client1.com] 将重定向到我?
  • 另外,我不能要求客户改用Route53,我对他的业务的干预必须尽可能透明
  • 很遗憾,没有其他办法。很久以前,我和你在同一条船上。 S3 不像普通服务器,我们可以要求某人将他们的 A 记录指向 S3 存储桶:(
  • @KaranShah 这里实际上有几个解决方案。
猜你喜欢
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 2021-12-05
  • 2020-10-13
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多