我正在使用一个自定义域来托pipe在亚马逊S3上的静态index.html。 这一切工作正常在我的域名: site.com 。 但是,当我访问www.site.com时,我得到一个错误。 据我所知,我需要做一个301的wwwurlredirect到裸体的URL。
似乎有几个方法可以做到这一点,但我对DNS的理解是有限的,听起来这些选项中的许多是不可取的。
有两个Alogging与www和一个没有。 显然这可能会导致search引擎优化问题,因为谷歌会把它作为重复的内容。
有一个单一的redirect桶,都是通过路由。 这可能会导致云端问题。 https://stackoverflow.com/questions/10115799/set-up-dns-based-url-forwarding-in-amazon-route53
使用PTRloggingredirect – 但显然这是不可取的。 如何将wwwredirect到Route53中的非www?
由于我的名字是godaddy,请使用godaddyredirect: https : //support.google.com/blogger/answer/58317?hl = zh_CN
使用像wwwizer http://wwwizer.com/naked-domain-redirect这样的免费服务
使用亚马逊桶redirect。 这给每个域需要两个桶的大问题,这意味着我只能有50个域而不是100个。这对我来说是一个问题。 http://i.stack.imgur.com/lqict.png
我试图列出我知道的每一个选项。 请能够更好地了解域名和DNS的人帮助我决定哪个是最佳的下线path,考虑性能,可靠性和SEO。
选项1不适用于S3托pipe的网站,因为S3在传入HTTP请求的Host:标头中看到的内容必须完全匹配存储桶的名称,并且设置重复的Alogging并不能解决您的问题。
选项2不会出于同样的原因 – 请求将永远不会到达包含redirect规则的存储区,除了指向存储区实际名称的请求之外。 链接到的答案只不过是做选项6的“硬道路”,并且每个主机名都需要一个存储桶。
选项3没有用,因为PTRlogging不会导致浏览器redirect。 通常用于反向DNS,在这种情况下PTRlogging没有应用。
选项4 Go Daddy有一个名为“域名转发”和“子域名转发”的选项,但这意味着你必须让你的DNS由Go Daddy托pipe,而不仅仅是让你的域名在那里注册(这是两件不同的事情,一起走)。 如果这是您现在所拥有的,则可以通过为www.example.com创buildA或CNAMElogging,将“www”子域(www.example.com)“转发”到Go Daddy完成的apex(example.com)指向他们自己的Web服务器,这些服务器生成HTTP 301或302redirect到http://example.com 。 如果您的DNS由Go Daddy托pipe,而不在Route 53上,那么这可能是最简单的select,但是如果您的DNS不与Go Daddy托pipe,则此选项不可用。 由于您在S3中使用域的顶点作为网站,因此我假设您的DNS由Route 53托pipe,这意味着这不起作用。
scheme5似乎是一个坏主意,引入了一个不必要的第三方,但更重要的是,它解决了错误的问题。 他们不会将www.example.comredirect到example.com,他们会将example.comredirect到www.example.com。
对于每个AWS账户可用的桶数量有限,选项6是一个不错的select,其缺点是您提到的。
如果您拥有多个不同的域,那么比另一个选项是在EC2中分配一个弹性IP地址(以便您有一个不会改变的静态端点IP地址),然后启动绑定到该IP地址的Micro实例,在上面安装HAProxy 。 HAProxy实际上是devise用于前端实际的Web服务器和从外部负载平衡stream量,但它也具有生成redirect的能力。 configuration不是非常复杂,HAProxy对于CPU来说是非常高效的,所以我希望你能从Micro中得到很多工作,但是如果有必要的stream量的话,它总是可以扩展到更大的实例。
你可以在端口80上configuration一个前端监听器:
frontend main bind *:80
然后为每个域创build一个访问控制列表(acl)来监视包含该主机名在“主机”http头中的请求…
acl www.example.com hdr(host) -i www.example.com
…然后configuration一个redirect来生成一个301到所需的主机名。
redirect prefix http://example.com if www.example.com
在DNS中,您可以使用指向此Micro实例的公共弹性IP地址的Alogging来configurationwww.example.com。
使用这种configuration,path被保留,所以发送到任何path的请求,如http://www.example.com/foo/bar所示,会被HTTP 301redirect到另一个path域,例如http://example.com/foo/bar 。
您可以使用运行在计算机上的实际Web服务器(例如Nginx或Apache)执行类似的操作,但HAProxy是一个非常重的轻量级工具,似乎非常适合执行此类任务,并生成像这样的redirect这是我在操作中用到的东西之一。