在Amazon Route53中设置基于DNS的URL转发

时间:2012-04-12 00:20:30

标签: dns forwarding amazon-route53

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

Route53是否支持此功能?

Nettica如何实现这一目标?它是否插入了特殊的A,CNAME,PTR或TXT记录?

5 个答案:

答案 0 :(得分:305)

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

这是我想出的。


目的

仅使用Amazon S3和Amazon Route 53中提供的工具,创建一个URL重定向,自动将http://url-redirect-example.vivekmchawla.com转发到别名为#34; MyAccount"的AWS控制台登录页面,位于{ {3}}。

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


第一步:创建S3存储桶

Open the S3 Management Console and click "Create Bucket"

打开S3管理控制台,然后单击"创建存储桶"。


第二步:命名您的S3 Bucket

Name your S3 Bucket

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

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

  3. 不用担心设置日志记录。只需点击"创建"你准备好了按钮。


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

    Enable Static Website Hosting and Specify Routing Rules

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

      <RoutingRules>
        <RoutingRule>
          <Redirect>
            <Protocol>https</Protocol>
            <HostName>myaccount.signin.aws.amazon.com</HostName>
            <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
            <HttpRedirectCode>301</HttpRedirectCode>
          </Redirect>
        </RoutingRule>
      </RoutingRules>
      
    8. 如果您对上述XML的行为感到好奇,请访问https://myaccount.signin.aws.amazon.com/console/。奖励技术(此处未涉及)转发到目标主机上的特定页面,例如http://redirect-destination.com/console/special-page.html。如果您需要此功能,请阅读<ReplaceKeyWith>元素。


      第4步:记下您的重定向存储桶&#34;端点&#34;

      Make a note of your Redirect Bucket's Endpoint

      记下静态网站托管&#34;端点&#34;亚马逊自动为此存储桶创建。您以后需要此功能,因此请突出显示整个网址,然后将其复制并粘贴到记事本中。

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

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

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

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

      为安全起见,如果您要测试终结点网址和重定向规则,则应打开隐私浏览会话,例如&#34;隐身模式&#34;在Chrome中。在隐身模式下复制,粘贴和测试终结点网址,一旦您关闭会话,任何缓存的内容都将消失。


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

      Open the Route 53 Management Console to Add Record Sets to your Hosted Zone

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

      3. 第6步:点击&#34;创建记录集&#34;按钮

        Click the Create Record Set button

        点击&#34;创建记录集&#34;将打开Route53管理控制台右侧的“创建记录集”窗口。


        步骤7:创建CNAME记录集

        Create a CNAME Record Set

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

        2. 选择&#34; CNAME - 规范名称&#34;对于此记录集的类型。

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

        4. 点击&#34;创建记录集&#34;按钮。假设没有错误,您现在可以在Hosted Zone的记录集列表中看到新的CNAME记录。


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

          打开新的浏览器标签,然后输入我们刚刚设置的网址。对我来说,那是AWM Documentation for "Syntax for Specifying Routing Rules"。如果一切正常,您应该直接发送到AWS登录页面。

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

          All done! Your URL forwarding should take you to the AWS sign-in page.


          结论

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

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

          干杯!

答案 1 :(得分:128)

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

AWS S3:

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

    1. 创建记录集类型A.将别名更改为Yes。单击Alias Target字段,然后选择您在上一个中创建的S3存储桶 步骤。
    2. 参考:How to redirect domains using Amazon Web Services

      AWS官方文档:Is there a way to redirect a domain to another domain using Amazon Route 53?

答案 2 :(得分: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 record添加aws.example.com,并将值设置为用于区域顶点的相同IP。

答案 3 :(得分:9)

更新

虽然我的原始答案仍然有效,并且可能有助于了解基于DNS的URL转发无法通过Amazon Route 53开箱即用的原因,但我强烈建议您查看Vivek M. Chawla的{{3通过同时引入utterly smart indirect solution并实现一个自包含服务器较少,因此只在AWS中实现免费解决方案。

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

原始答案

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

您可以为aws.example.com创建一个CNAME别名,例如myaccount.signin.aws.amazon.com,但是,在此示例中,DNS不提供对console等子目录的别名的官方支持。

  • 遗憾的是,在点击https://myaccount.signin.aws.amazon.com/(我刚刚尝试过)时,AWS似乎不会默认执行此操作,因为它会立即解决您的问题,并且首先会有很多意义;此外,它们应该很容易配置。

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

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

答案 4 :(得分:0)

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