我正在尝试在 Amazon Route53 中设置转发。我的最后一个 DNS 服务 (Nettica) 允许我将请求路由到“aws.example.com”到“https://myaccount.signin.aws.amazon.com/console/”。
Route53 是否支持此功能?
Nettica 是如何做到这一点的?它是否插入特殊的 A、CNAME、PTR 或 TXT 记录?
我正在尝试在 Amazon Route53 中设置转发。我的最后一个 DNS 服务 (Nettica) 允许我将请求路由到“aws.example.com”到“https://myaccount.signin.aws.amazon.com/console/”。
Route53 是否支持此功能?
Nettica 是如何做到这一点的?它是否插入特殊的 A、CNAME、PTR 或 TXT 记录?
我遇到了与 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 管理控制台并单击“创建存储桶”。
选择存储桶名称。这一步真的很重要!您必须将存储桶命名为与要设置转发的 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 的作用感到好奇,请访问AWM 文档中的“Syntax for Specifying Routing Rules”。一种奖励技术(此处未介绍)是转发到目标主机上的特定页面,例如http://redirect-destination.com/console/special-page.html
. 如果您需要此功能,请阅读该<ReplaceKeyWith>
元素。
记下 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,一旦您关闭会话,缓存的任何内容都将消失。
单击“创建记录集”将打开 Route53 管理控制台右侧的“创建记录集”窗口。
在名称字段中,输入您在命名 S3 存储桶时使用的 URL 的主机名部分。URL 的“主机名部分”是托管区域名称左侧的所有内容。我将我的 S3 存储桶命名为“url-redirect-example.vivekmchawla.com”,我的托管区域是“vivekmchawla.com”,所以我需要输入的主机名部分是“url-redirect-example”。
为此记录集的类型选择“CNAME - 规范名称”。
对于值,粘贴我们在步骤 3 中创建的 S3 存储桶的端点 URL。
单击“创建记录集”按钮。假设没有错误,您现在可以在托管区域的记录集列表中看到一条新的 CNAME 记录。
打开一个新的浏览器选项卡并输入我们刚刚设置的 URL。对我来说,那就是http://url-redirect-example.vivekmchawla.com。如果一切正常,您应该被直接发送到 AWS 登录页面。
因为我们使用myaccount.signin.aws.amazon.com
别名作为重定向的目标 URL,亚马逊确切地知道我们正在尝试访问哪个帐户,并直接将我们带到那里。如果您想为员工或承包商提供一个简短、干净、带有品牌名称的 AWS 登录链接,这将非常方便。
我个人喜欢各种 AWS 服务,但如果您决定将 DNS 管理迁移到 Amazon Route 53,那么缺乏简单的 URL 转发可能会令人沮丧。我希望本指南有助于更轻松地为您的托管区域设置 URL 转发。
如果您想了解更多信息,请查看 AWS 文档站点中的以下页面。
干杯!
AWS 支持指出了一个更简单的解决方案。这与@Vivek M. Chawla 提出的想法基本相同,但实现更简单。
AWS S3:
aws.example.com
Redirect all requests to another host name
并输入您的 URL:
https://myaccount.signin.aws.amazon.com/console/
AWS Route53:
Yes
。单击Alias
Target
字段并选择您在上一步中创建的 S3 存储桶。我能够使用 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 record
foraws.example.com
并将值设置为用于您的区域顶点的相同 IP。
虽然我在下面的原始答案仍然有效,并且可能有助于了解无法通过Amazon Route 53开箱即用地使用基于 DNS 的 URL 转发的原因,但我强烈建议您通过同时介绍的方法查看 Vivek M. Chawla 的完全智能的间接解决方案Amazon S3 支持网站重定向并在 AWS 中实现更少的自包含服务器,因此免费的解决方案仅如此。
Nettica 必须为此运行自定义重定向解决方案,这是问题所在:
您可以创建一个 CNAME 别名,例如aws.example.com
for ,但是,DNS 不提供像本示例中myaccount.signin.aws.amazon.com
那样为子目录命名的官方支持。console
https://myaccount.signin.aws.amazon.com/
(我刚刚尝试过),因为它会立即解决您的问题,并且一开始就很有意义;此外,它们的配置应该很容易。出于这个原因,一些 DNS 提供商显然已经实现了自定义解决方案,以允许重定向到子目录;我冒昧地猜测,他们基本上是在为自己的域提供 CNAME 别名,并通过即时HTTP 3xx Redirection再次从那里重定向到最终目的地。
因此,要获得相同的结果,您需要运行一个 HTTP 服务来执行这些重定向,这当然不是人们希望的简单解决方案。也许/希望有人可以想出一个更聪明的方法。
如果您仍然对简单方法有疑问,请创建一个空存储桶,然后Redirect all requests to another host name
通过控制台在属性中的静态网络托管下。确保您在 route53 中设置了 2 条 A 记录,一条为final-destination.com
,一条为redirect-to.final-destination.com
。其中每一项的设置都是相同的,但名称会有所不同,因此它与您为存储桶/URL 设置的名称相匹配。