【发布时间】:2011-11-17 15:08:36
【问题描述】:
我看到有几个人描述了如何为具有子域的自定义域执行此操作,但没有人谈论没有子域如何执行此操作。
示例:Setting foobar.com and www.foobar.com to point to my Amazon S3–hosted site
我个人不想要 www 前缀。有没有办法做到这一点?亚马逊将其设置为允许静态站点和自定义域,然后将其锁定到前缀域,我似乎很疯狂?
提前致谢,
【问题讨论】:
我看到有几个人描述了如何为具有子域的自定义域执行此操作,但没有人谈论没有子域如何执行此操作。
示例:Setting foobar.com and www.foobar.com to point to my Amazon S3–hosted site
我个人不想要 www 前缀。有没有办法做到这一点?亚马逊将其设置为允许静态站点和自定义域,然后将其锁定到前缀域,我似乎很疯狂?
提前致谢,
【问题讨论】:
由于历史原因,任何 URL 都需要解析为您已经知道如何处理的子域:使用您的 DNS 提供商创建 CNAME 记录,将 www 指向您的 S3 托管子域。有一些细节是正确的,在别处有很好的描述。
您仍然希望支持那些喜欢他们的浏览器会自动完成 http:// 和 .com 等的用户,想要输入一个裸域 domain.com,并让它自动完成到您的默认子域,例如 @987654325 @。
完成此操作的最简单方法是使用www 作为您的默认子域,并将您的DNS 提供商的A 记录指向wwwizer.com (174.129.25.170)。它们会自动将任何裸域重定向到前面带有www 的同一个域。
如果您使用 Amazon Route 53 提供 DNS 服务,您将获得最快的开发周转时间,并且您的访问者获得最快的 DNS 解析。 Route 53 可以将其 A 记录指向wwwizer.com。但是,您可能想要创建一个微型 Amazon EC2 实例并开始对其进行编程。在 50 年代,每个人都重建了自己的汽车。在 80 年代,每个人都在 Fry's 的过道上推着购物车,并建造了自己的电脑。现在,您希望能够在云中构建自己的计算机,随着时间的推移您会发现很多原因,Amazon EC2 是最佳选择。目前,您的云计算机将为您简单地处理裸域。后来,发邮件,生成静态网站,...
安装 Apache 网络服务器(LAMP 中的 A;LAMP 服务器可以解决问题),并为您的每个域配置一个虚拟主机。然后将弹性 IP 地址指向您的 EC2 实例,并更新 Route 53 以使您的 A 记录指向该弹性 IP 地址。 Amazon 不支持多个弹性 IP 指向同一个 EC2 实例,但您可以为多个域 A 记录提供相同的弹性 IP,并让 Apache 在您的 EC2 实例中解决此问题。
这需要一些摆弄和试验,因为在细节上有很多相互矛盾的建议。我使用了ami-ad36fbc4 实例映像(美国东部,64 位 EBS 支持的 Ubuntu 10.04 LTS),因为我对 Ubuntu 很熟悉,有很多关于 Ubuntu 的在线帮助,而且这个映像将得到多年的支持。我编辑了/etc/apache2/httpd.conf 以获得内容
NameVirtualHost *
<VirtualHost *>
ServerName first.net
Redirect permanent / http://www.first.net/
</VirtualHost>
<VirtualHost *>
ServerName second.net
Redirect permanent / http://www.second.net/
</VirtualHost>
然后使用检查错误
sudo /usr/sbin/apache2ctl configtest
然后使用重新启动 Apache 服务器
sudo /etc/init.d/apache2 restart
Apache 是 Linux 风格的标准,但文件位置等细节可能会有所不同,例如/etc/apache2/httpd.conf 可能是 /etc/httpd.conf。例如,可能需要在httpd.conf 中添加Listen 80,但如果该命令已经在其他地方,Apache 会抛出错误。因此,请谨慎阅读网络说明,并准备好通过 Google 搜索任何错误消息。
由于我已经使用 Amazon Route 53 数天来指向 wwwizer.com,因此在我更新 Route 53 以指向我的弹性 IP 后,它立即起作用。在切换到 Route 53 之前,我需要几天时间来验证每个更改,因为信息会在网络上传播。一旦每个人都知道要关注亚马逊,亚马逊就可以更快地传播其内部变化。
【讨论】:
很遗憾,您不能将 foobar.com 指向 Amazon S3 存储桶,其原因与 DNS 的工作方式有关。
DNS 不允许域的根(称为 zone apex)指向另一个 DNS 名称(您不能将 foobar.com 设置为 CNAME / 只有 subdomain.foobar.com 可以是 CNAME)
【讨论】:
ALIAS 记录,这个答案不再正确。别名记录允许域的顶点返回存储桶、云前端分布、弹性负载均衡器或同一域中的另一个主机名的 A 记录(最后一个的要点是可以在没有双精度的情况下执行此操作-CNAME 的倾角)。
自从提出这个问题后,情况发生了变化。现在可以使用根域在 S3 上托管您的站点。
您必须创建另一个具有裸(根)域名的存储桶,而不是只有一个名为“www.yourserver.com”的存储桶,例如“yourserver.com”。
之后,您将不得不使用 Amazon 的 DNS 服务 Route 53。为裸域创建一个 A 记录,为“www”主机名创建一个 CNAME。
请注意,您需要将域的域管理完全移至 Amazon Route 53。
在此处查看详细的演练:http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html
【讨论】: