154

我正在尝试在 Amazon Route53 中设置转发。我的最后一个 DNS 服务 (Nettica) 允许我将请求路由到“aws.example.com”到“https://myaccount.signin.aws.amazon.com/console/”。

Route53 是否支持此功能?

Nettica 是如何做到这一点的?它是否插入特殊的 A、CNAME、PTR 或 TXT 记录?

4

5 回答 5

344

我遇到了与 Saurav 描述的完全相同的问题,但我真的需要找到一个除了 Route 53 和 S3 之外不需要任何其他东西的解决方案。我为我的博客创建了一个操作指南,详细说明了我做了什么。

这是我想出的。


客观的

仅使用 Amazon S3 和 Amazon Route 53 中可用的工具,创建一个 URL 重定向,自动将http://url-redirect-example.vivekmchawla.com转发到别名为“MyAccount”的 AWS 控制台登录页面,该页面位于https ://myaccount.signin.aws.amazon.com/console/

本指南将教您设置 URL 转发到任何 URL,而不仅仅是来自亚马逊的 URL。您将学习如何设置转发到特定文件夹(例如我的示例中的“/console”),以及如何将重定向协议从 HTTP 更改为 HTTPS(反之亦然)。


第一步:创建您的 S3 存储桶

打开 S3 管理控制台并单击

打开 S3 管理控制台并单击“创建存储桶”。


第二步:命名您的 S3 存储桶

命名您的 S3 存储桶

  1. 选择存储桶名称。这一步真的很重要!您必须将存储桶命名为与要设置转发的 URL 完全相同。对于本指南,我将使用名称“url-redirect-example.vivekmchawla.com”。

  2. 选择最适合您的地区。如果您不知道,请保留默认值。

  3. 不要担心设置日志记录。准备好后,只需单击“创建”按钮。


第 3 步:启用静态网站托管并指定路由规则

启用静态网站托管并指定路由规则

  1. 在属性窗口中,打开“静态网站托管”的设置。
  2. 选择“启用网站托管”选项。
  3. 输入“索引文档”的值。此对象(文档)永远不会由 S3 提供,您也不必上传它。只需使用您想要的任何名称。
  4. 打开“编辑重定向规则”的设置。
  5. 完整粘贴以下 XML 片段。

    <RoutingRules>
      <RoutingRule>
        <Redirect>
          <Protocol>https</Protocol>
          <HostName>myaccount.signin.aws.amazon.com</HostName>
          <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
          <HttpRedirectCode>301</HttpRedirectCode>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

如果您对上述 XML 的作用感到好奇,请访问AWM 文档中的“Syntax for Specifying Routing Rules”。一种奖励技术(此处未介绍)是转发到目标主机上的特定页面,例如http://redirect-destination.com/console/special-page.html. 如果您需要此功能,请阅读该<ReplaceKeyWith>元素。


第 4 步:记下重定向存储桶的“端点”

记下您的重定向存储桶的端点

记下 Amazon 自动为此存储桶创建的静态网站托管“端点”。稍后您将需要它,因此突出显示整个 URL,然后将其复制并粘贴到记事本中。

警告!此时您实际上可以单击此链接来检查您的重定向规则是否输入正确,但要小心!这就是为什么...

假设您<Hostname>在重定向规则的标签内输入了错误的值。也许你不小心输入myaccount.amazon.com了,而不是myaccount.signin.aws.amazon.com. 如果您单击链接来测试 Endpoint URL,AWS 会很乐意将您的浏览器重定向到错误的地址!

注意到您的错误后,您可能会<Hostname>在重定向规则中编辑以修复错误。不幸的是,当您再次尝试点击该链接时,您很可能最终会被重定向回错误的地址!即使您修复了该<Hostname>条目,您的浏览器仍在缓存上一​​个(不正确的!)条目。发生这种情况是因为我们使用的是 HTTP 301(永久)重定向,Chrome 和 Firefox 等浏览器默认会缓存这些重定向。

如果您将端点 URL 复制并粘贴到其他浏览器(或清除当前浏览器中的缓存),您将再次有机会查看更新后的<Hostname>条目是否最终是正确的。

为了安全起见,如果您想测试您的端点 URL 和重定向规则,您应该打开一个私密浏览会话,例如 Chrome 中的“隐身模式”。在隐身模式下复制、粘贴和测试端点 URL,一旦您关闭会话,缓存的任何内容都将消失。


第 5 步:打开 Route53 管理控制台并转到您的托管区域(域名)的记录集

打开 Route 53 管理控制台以将记录集添加到您的托管区域

  1. 选择您在创建存储桶时使用的托管区域(域名)。由于我将存储桶命名为“url-redirect-example.vivekmchawla.com”,因此我将选择 vivekmchawla.com 托管区域。
  2. 单击“转到记录集”按钮。

第 6 步:单击“创建记录集”按钮

单击创建记录集按钮

单击“创建记录集”将打开 Route53 管理控制台右侧的“创建记录集”窗口。


第 7 步:创建 CNAME 记录集

创建 CNAME 记录集

  1. 在名称字段中,输入您在命名 S3 存储桶时使用的 URL 的主机名部分。URL 的“主机名部分”是托管区域名称左侧的所有内容。我将我的 S3 存储桶命名为“url-redirect-example.vivekmchawla.com”,我的托管区域是“vivekmchawla.com”,所以我需要输入的主机名部分是“url-redirect-example”。

  2. 为此记录集的类型选择“CNAME - 规范名称”。

  3. 对于值,粘贴我们在步骤 3 中创建的 S3 存储桶的端点 URL。

  4. 单击“创建记录集”按钮。假设没有错误,您现在可以在托管区域的记录集列表中看到一条新的 CNAME 记录。


第 8 步:测试您的新 URL 重定向

打开一个新的浏览器选项卡并输入我们刚刚设置的 URL。对我来说,那就是http://url-redirect-example.vivekmchawla.com。如果一切正常,您应该被直接发送到 AWS 登录页面。

因为我们使用myaccount.signin.aws.amazon.com别名作为重定向的目标 URL,亚马逊确切地知道我们正在尝试访问哪个帐户,并直接将我们带到那里。如果您想为员工或承包商提供一个简短、干净、带有品牌名称的 AWS 登录链接,这将非常方便。

全部完成! 您的 URL 转发应该会将您带到 AWS 登录页面。


结论

我个人喜欢各种 AWS 服务,但如果您决定将 DNS 管理迁移到 Amazon Route 53,那么缺乏简单的 URL 转发可能会令人沮丧。我希望本指南有助于更轻松地为您的托管区域设置 URL 转发。

如果您想了解更多信息,请查看 AWS 文档站点中的以下页面。

干杯!

于 2013-01-12T00:59:37.800 回答
165

AWS 支持指出了一个更简单的解决方案。这与@Vivek M. Chawla 提出的想法基本相同,但实现更简单。

AWS S3:

  1. 创建一个以您的完整域命名的存储桶,例如aws.example.com
  2. 在存储桶属性上,选择Redirect all requests to another host name并输入您的 URL: https://myaccount.signin.aws.amazon.com/console/

AWS Route53:

  1. 创建记录集类型 A。将别名更改为Yes。单击Alias Target字段并选择您在上一步中创建的 S3 存储桶。

参考:如何使用 Amazon Web Services 重定向域

AWS 官方文档:有没有办法使用 Amazon Route 53 将一个域重定向到另一个域?

于 2015-10-07T12:05:44.047 回答
12

我能够使用 nginx 处理 301 重定向到 aws 登录页面。

转到您的 nginx conf 文件夹(在我的情况下,我在其中为启用的 conf 文件/etc/nginx/sites-available创建符号链接)。/etc/nginx/sites-enabled

然后添加重定向路径

server {
  listen 80;
  server_name aws.example.com;
  return 301 https://myaccount.signin.aws.amazon.com/console;
}

如果您使用的是 nginx,您很可能会有额外的服务器块(apache 术语中的虚拟主机)来处理您的区域顶点(example.com),或者您已经设置了它。确保将其中之一设置为默认服务器。

server {
  listen 80 default_server;
  server_name example.com;
  # rest of config ...
}

在 Route 53 中,添加一个A recordforaws.example.com并将值设置为用于您的区域顶点的相同 IP。

于 2012-06-20T20:35:11.173 回答
10

更新

虽然我在下面的原始答案仍然有效,并且可能有助于了解无法通过Amazon Route 53开箱即用地使用基于 DNS 的 URL 转发的原因,但我强烈建议您通过同时介绍的方法查看 Vivek M. Chawla 的完全智能的间接解决方案Amazon S3 支持网站重定向并在 AWS 中实现更少的自包含服务器,因此免费的解决方案仅如此。

  • 实施自动化解决方案以生成此类重定向留给读者作为练习,但请通过发布您的解决方案来向 Vivek 的史诗般的答案致敬;)

原始答案

Nettica 必须为此运行自定义重定向解决方案,这是问题所在:

您可以创建一个 CNAME 别名,例如aws.example.comfor ,但是,DNS 不提供像本示例中myaccount.signin.aws.amazon.com那样为子目录命名的官方支持。console

  • 遗憾的是,AWS 在默认情况下似乎并没有简单地执行此操作https://myaccount.signin.aws.amazon.com/(我刚刚尝试过),因为它会立即解决您的问题,并且一开始就很有意义;此外,它们的配置应该很容易。

出于这个原因,一些 DNS 提供商显然已经实现了自定义解决方案,以允许重定向到子目录;我冒昧地猜测,他们基本上是在为自己的域提供 CNAME 别名,并通过即时HTTP 3xx Redirection再次从那里重定向到最终目的地。

因此,要获得相同的结果,您需要运行一个 HTTP 服务来执行这些重定向,这当然不是人们希望的简单解决方案。也许/希望有人可以想出一个更聪明的方法。

于 2012-04-12T09:57:58.783 回答
1

如果您仍然对简单方法有疑问,请创建一个空存储桶,然后Redirect all requests to another host name通过控制台在属性中的静态网络托管下。确保您在 route53 中设置了 2 条 A 记录,一条为final-destination.com,一条为redirect-to.final-destination.com。其中每一项的设置都是相同的,但名称会有所不同,因此它与您为存储桶/URL 设置的名称相匹配。

于 2016-10-01T08:44:40.030 回答