domain-name-system – Amazon S3 – 用于路由裸URL的选项

domain-name-system – Amazon S3 – 用于路由裸URL的选项,第1张

概述问题 我正在使用自定义域来在亚马逊S3上托管静态index.html.这一切都适用于我的域名:site.com.但是,当我访问www.site.com时,我收到了一个错误.根据我的理解,我需要将www URL重定向到裸URL. 似乎有几种方法可以做到这一点,但我对DNS的理解是有限的,听起来很多这些选项是不可取的. 选项 >有两个A记录,一个用www,一个没用.显然,这可能会导致搜索引擎优化问题, 问题

我正在使用自定义域来在亚马逊S3上托管静态index.HTML.这一切都适用于我的域名:site.com.但是,当我访问www.site.com时,我收到了一个错误.根据我的理解,我需要将www URL重定向到裸URL.

似乎有几种方法可以做到这一点,但我对DNS的理解是有限的,听起来很多这些选项是不可取的.

选项

>有两个A记录,一个用www,一个没用.显然,这可能会导致搜索引擎优化问题,因为谷歌将把它作为重复内容.
>有一个重定向桶,所有都被路由通过.这可能会导致cloudfront出现问题.
https://stackoverflow.com/questions/10115799/set-up-dns-based-url-forwarding-in-amazon-route53
>使用PTR记录重定向 – 但显然这是不可取的.
How do I redirect www to non-www in Route53?
>因为我的名字是与godaddy,使用godaddy重定向:
https://support.google.com/blogger/answer/58317?hl=en
>使用像wwwizer这样的免费服务
http://wwwizer.com/naked-domain-redirect
>使用亚马逊桶重定向.这给了每个域需要两个桶的大问题,这意味着我只能有50个域而不是100个.这对我来说是一个问题.
http://i.stack.imgur.com/lqict.png

我试图列出我知道的每一个选项.请更好地了解域名和DNS的人帮助我决定哪个是最佳路线,考虑性能,可靠性和SEO.

解决方法 选项1不适用于S3托管的网站,因为S3在传入的http请求的Host:标头中看到的内容必须与存储桶的名称完全匹配,并且设置重复的A记录不会解决您的问题.

选项2不会出于同样的原因 – 除了针对存储桶实际名称的请求之外,请求永远不会到达包含重定向规则的存储桶.您链接的答案仅仅是执行选项6的“困难方式”,并且每个主机名需要一个存储桶.

选项3没有用,因为PTR记录不会导致浏览器重定向.通常用于反向DNS,A PTR记录在此上下文中没有应用程序.

选项4 Go Daddy有一个名为“域名转发”和“子域名转发”的选项,但这意味着您必须让您的DNS由Go Daddy托管,而不仅仅是在那里注册您的域名(这些是两个不同的东西,通常但不一定,一起走).如果这就是您现在所拥有的,您可以将“www”子域名(www.example.com)“转发”到Go Daddy通过为www.example.com创建A或Cname记录来完成的顶点(example.com)这指向他们自己的Web服务器,它生成http 301或302重定向到http://example.com.如果您的DNS托管Go Daddy,而不是Route 53,那么这可能是最简单的选项,但如果您的DNS不是Go托管的爸爸,这个选项不可用.由于您使用域的顶点作为S3中的网站,我假设您的DNS托管路由53,这意味着这将无法正常工作.

选项5似乎是一个坏主意,在方程式中引入了不必要的第三方,但更重要的是,它解决了错误的问题.他们没有将www.example.com重定向到example.com,他们将example.com重定向到www.example.com.

对于每个AWS账户可用的有限数量的存储桶,选项6是一个不错的选择,具有您提到的缺点.

如果你拥有那么多不同的域,那么另一个选择就是在EC2中分配一个d性IP地址(这样你就有了一个不会改变的静态端点IP地址),然后启动一个绑定到该IP地址的Micro实例,安装HAProxy就可以了. HAProxy实际上是为前端实际的Web服务器设计的,并且可以从外部对它们进行负载均衡,但它也具有生成重定向的能力.配置并不是非常复杂,HAProxy对cpu非常有效,所以我希望你能从Micro中获得大量工作,但如果流量必要的话,可以随时将其扩展到更大的实例.

您将在端口80上配置前端侦听器:

frontend main    bind *:80

然后为每个域创建一个访问控制列表(acl)来监视“Host”http头中包含该主机名的请求…

acl www.example.com hdr(host) -i www.example.com

…然后配置重定向以生成所需主机名的301.

redirect prefix http://example.com if www.example.com

在DNS中,您将使用指向此Micro实例的公共d性IP地址的A记录配置www.example.com.

使用此配置,路径将被保留,因此发送到任何路径的请求(如同http://www.example.com/foo/bar)将被http 301重定向到另一个域上的完全相同的路径,例如http://example.com/foo/bar.

您可以使用在计算机上运行的实际Web服务器执行类似的 *** 作,例如Nginx或Apache,但HAProxy是一个非常重负且轻量级的工具,似乎非常适合此类任务,并生成这样的重定向这是我在 *** 作中使用它的一个方面.

总结

以上是内存溢出为你收集整理的domain-name-system – Amazon S3 – 用于路由裸URL的选项全部内容,希望文章能够帮你解决domain-name-system – Amazon S3 – 用于路由裸URL的选项所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095258.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存