在Amazon Route53中设置基于DNS的URL转发[关闭]


140

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

Route53支持此功能吗?

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


也可以使用URL作为起点创建Cloudfront发行版。只需将域指向Route53的Cloudfront发行版,并确保正确配置TLS证书即可。
Deiwin

Answers:


325

我遇到了Saurav所描述的完全相同的问题,但是我确实需要找到一个不需要Route 53和S3的解决方案。我为博客创建了操作指南,详细说明了我的所作所为。

这是我想出的。


目的

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

本指南将教您将URL转发设置为任何URL,而不仅仅是Amazon的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文档中的“指定路由规则的语法”。例如,奖励技术(此处未涵盖)正在转发到目标主机上的特定页面http://redirect-destination.com/console/special-page.html<ReplaceKeyWith>如果需要此功能,请阅读有关元素的信息。


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

记下重定向桶的端点

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

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

假设您<Hostname>在重定向规则的标签内输入了错误的值。也许您不小心输入了myaccount.amazon.com而不是myaccount.signin.aws.amazon.com。如果您单击链接来测试端点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,所以Amazon确切知道我们要访问哪个帐户,并将我们直接带到那里。如果您想为员工或承包商提供简短,干净的品牌AWS登录链接,这将非常方便。

全做完了! 您的URL转发应该带您到AWS登录页面。


结论

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

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

干杯!


15
+1完全聪明的解决方案-非常感谢您抽出宝贵的时间来编写这样一份史诗般的分步指南,我已经更新了答案,请以后的读者参考您的建议!
斯特芬欧宝

23
注意:对于那些想要根域重定向的用户:example.org-> example.com -除了使用启用了“别名:是”的A Record之外,其他所有操作都一样。然后选择存储桶作为目标。
JaredBroad13年

10
很好的解决方案。但是我在使用https作为原始URL时遇到了问题。如果我要重定向的存储段是dev.example.com,则重定向对http:// dev.example.com很有用,但对https:// dev.example.com无效。我尚未找到解决此问题的方法。
格雷格,

4
@Greg我认为这可能与Amazon如何处理S3的HTTPS有关。不幸的是,当使用CNAME访问S3存储桶时,您无法通过添加“ https”来强制SSL,因为Amazon并未托管“ * .example.com”的证书。由于S3不允许连接,因此我们永远也不会使用重定向逻辑。不幸的是,我看不到解决方法。
Vivek M. Chawla 2013年

17
bucker选项下有一个新选项“将所有请求重定向到另一个主机名”。我将IAM登录URL放在那里,它就像一个魅力,不需要XML。
丹·米隆

145

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将域重定向到另一个域?


16
这非常适合HTTP,但不适用于HTTPS。
mythofechelon '16

@mythofechelon是什么意思?到目前为止,https还没有任何问题。如果您想在您的域(例如:https:// aws.example.com)中使用https,这是一个完全不同的问题,因为您将需要具有ssl证书的服务器才能执行此操作。
罗伯托·施耐德


2
这个Redirect all requests to another host name选项还存在吗?转到存储桶属性时看不到它。
艾丹,

1
这应该是正确的答案,它更好地使用Alias出于性能目的而不是CNAME来引用AWS内部的组件(这是可行的,但不是最佳方法)。
道格拉斯·菲格罗亚

11

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

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

然后添加重定向路径

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 recordfor aws.example.com并将其值设置为用于区域顶点的IP。


更好的方法是使用Alias记录指向该机器前面的弹性负载平衡器。
maletor 2012年

9

更新资料

虽然我的下面原来的答复仍然是有效的,并可能有助于了解通过不是可用的基于DNS URL转发事业亚马逊路线53开箱,我强烈建议检查出维韦克M.乔拉的完全智能间接解决方案通过同时推出Amazon S3对网站重定向的支持减少了实现自助式服务器的次数,因此仅在AWS内提供免费的解决方案。

  • 读者可以自己练习实现自动生成重定向的解决方案,但是请发布解决方案以赞扬Vivek的史诗回答;)

原始答案

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

您可以创建一个CNAME别名一样aws.example.commyaccount.signin.aws.amazon.com,但是,DNS提供了一个别名子目录一样,没有官方的支持,console在这个例子中。

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

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

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


3
CNAME是别名,不会重定向。
ejain 2012年

@ejain-您当然是正确的,我已经相应地解决了这个问题(那时候一定错过了通知);感谢您指出此潜在的误导性措词!
斯特芬·欧宝

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.