使用route53+S3实现显式URL转发
上个月为了做实验方便申请了一个域名,域名是在万网上申请的,当时稍微看了一下功能,跟route53对比在创建dns记录的时候很明显的多了可以创建url转发这个选型。不知道为啥route53不支持这个,查了半天也没查到。当时没在意,这几天弄了个cloud9的ide环境,但是那一串url太难记了。于是就想弄个简单的域名来转换过去,
cloud9 IDE的url地址是https://ap-southeast-1.console.aws.amazon.com/cloud9/ide/54019019b3b74e0cac972ab6d7343091, 但是这个用cname转发实现不了,因为cname转发之后不能用带路径的,只能用url转发才能实现。
google了一下,还真是有折中的办法,简单说来就是在s3上起一个web托管服务器。然后在这个托管服务器里面写明url转发到哪,然后在route53上设置一个cname或者别名,不知道为什么,我的route53上的s3别名老是刷新不出来,所以我就用cname了。
具体怎么弄得大家可以参考https://stackoverflow.com/questions/10115799/set-up-dns-based-url-forwarding-in-amazon-route53?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
这里我只想把我弄这个过程中一些容易出错的地方给总结一下。
1. 在s3里面建bucket的时候,要用dns的名字去建,虽然也可以不用,但是要设置很多东西,这里建议大家用dns的名字去建bucket,否则访问的时候会说找不到这个bucket,如下图所示,我的域名是ide.wangyu7988.com,所以bucket名字也是这个
2. S3本身支持重定向请求,可以很简单的实现,但是这里我没用,反而用的重定向规则,因为用重定向请求的时候,会自动在重定向过去的URL地址后面加一个斜杠/, 加上这一个斜杠,cloud9的ide界面就打不开了,会报错。如下图所示,重定向规则的写法很简单,http 301的意思可以百度,我也是刚查的
<RoutingRules>
<RoutingRule>
<Redirect>
<Protocol>https</Protocol>
<HostName>ap-southeast-1.console.aws.amazon.com</HostName>
<ReplaceKeyPrefixWith>cloud9/ide/54019019b3b74e0cac972ab6d7343091</ReplaceKeyPrefixWith>
<HttpRedirectCode>301</HttpRedirectCode>
</Redirect>
</RoutingRule>
</RoutingRules>
3. 正常的访问界面应该是如下所示的,看那个url后面是没有斜杠的。如果你的浏览器老是显示错误,清空缓存,再试一下。
4. 然后就是在route53里面建一个别名,指向s3托管网站的url。然后就只需要在ie的地址栏里面输入ide.wangyu7988.com就可以了。