我正在尝试在Amazon Route53中设置转发。我的上一个DNS服务(Nettica)允许我将请求路由到“aws.example.com”到“https://myaccount.signin.aws.amazon.com/console/”。
Route53是否支持此功能?
Nettica如何实现这一目标?它是否插入了特殊的A,CNAME,PTR或TXT记录?
答案 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管理控制台,然后单击"创建存储桶"。
选择水桶名称。这一步非常重要!您必须将存储桶命名为与要设置转发的URL完全相同。对于本指南,我将使用名称" url-redirect-example.vivekmchawla.com"。
选择最适合您的区域。如果您不知道,请保留默认值。
不用担心设置日志记录。只需点击"创建"你准备好了按钮。
将以下XML代码段全部粘贴到其中。
<RoutingRules>
<RoutingRule>
<Redirect>
<Protocol>https</Protocol>
<HostName>myaccount.signin.aws.amazon.com</HostName>
<ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
<HttpRedirectCode>301</HttpRedirectCode>
</Redirect>
</RoutingRule>
</RoutingRules>
如果您对上述XML的行为感到好奇,请访问https://myaccount.signin.aws.amazon.com/console/。奖励技术(此处未涉及)转发到目标主机上的特定页面,例如http://redirect-destination.com/console/special-page.html
。如果您需要此功能,请阅读<ReplaceKeyWith>
元素。
记下静态网站托管&#34;端点&#34;亚马逊自动为此存储桶创建。您以后需要此功能,因此请突出显示整个网址,然后将其复制并粘贴到记事本中。
小心!此时您可以实际点击此链接查看您的重定向规则是否输入正确,但要小心!这就是为什么......
我们假设您在重定向规则中的<Hostname>
标记内输入了错误的值。也许您不小心输入了myaccount.amazon.com
,而不是myaccount.signin.aws.amazon.com
。如果您单击链接以测试端点URL,AWS将很乐意将您的浏览器重定向到错误的地址!
在注意到您的错误后,您可能会编辑重定向规则中的<Hostname>
以修复错误。不幸的是,当您再次尝试点击该链接时,您最有可能最终被重定向回错误的地址!即使您修复了<Hostname>
条目,您的浏览器也会缓存上一个(不正确的!)条目。这是因为我们正在使用HTTP 301(永久)重定向,Chrome和Firefox等浏览器默认会缓存。
如果您将端点URL复制并粘贴到其他浏览器(或清除当前缓存中的缓存),您将再次有机会查看更新的<Hostname>
条目是否最终是正确的
为安全起见,如果您要测试终结点网址和重定向规则,则应打开隐私浏览会话,例如&#34;隐身模式&#34;在Chrome中。在隐身模式下复制,粘贴和测试终结点网址,一旦您关闭会话,任何缓存的内容都将消失。
点击&#34;创建记录集&#34;将打开Route53管理控制台右侧的“创建记录集”窗口。
在“名称”字段中,输入在命名S3存储桶时使用的URL的主机名部分。 &#34;主机名部分&#34; URL是您托管区域名称左侧的所有内容。我将我的S3桶命名为#34; url-redirect-example.vivekmchawla.com&#34;,我的托管区域为&#34; vivekmchawla.com&#34;,因此我需要输入的主机名部分为&#34 ; URL重定向的示例&#34;
选择&#34; CNAME - 规范名称&#34;对于此记录集的类型。
对于Value,请粘贴我们在步骤3中创建的S3存储桶的端点URL。
点击&#34;创建记录集&#34;按钮。假设没有错误,您现在可以在Hosted Zone的记录集列表中看到新的CNAME记录。
打开新的浏览器标签,然后输入我们刚刚设置的网址。对我来说,那是AWM Documentation for "Syntax for Specifying Routing Rules"。如果一切正常,您应该直接发送到AWS登录页面。
由于我们使用myaccount.signin.aws.amazon.com
别名作为我们的重定向目标网址,因此亚马逊确切地知道我们正在尝试访问哪个帐户,并将我们直接带到那里。如果您想为员工或承包商提供简短,干净,品牌的AWS登录链接,这将非常方便。
我个人喜欢各种AWS服务,但如果您决定将DNS管理迁移到Amazon Route 53,那么缺少简单的URL转发可能会令人沮丧。我希望本指南有助于为托管区域设置URL转发更容易。
如果您想了解更多信息,请查看AWS文档站点中的以下页面。
干杯!
答案 1 :(得分:128)
AWS支持指出了一个更简单的解决方案。这与@Vivek M. Chawla提出的基本相同,具有更简单的实现。
AWS S3:
aws.example.com
Redirect all requests to another host name
并输入您的网址:
https://myaccount.signin.aws.amazon.com/console/
AWS Route53:
Yes
。单击Alias
Target
字段,然后选择您在上一个中创建的S3存储桶
步骤。参考: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中实现免费解决方案。
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
。每个设置的设置都是相同的,但名称会有所不同,因此它与您为存储桶/网址设置的名称相匹配。