如何指定域从Amazon S3提供静态站点? (不是子域名)

时间:2011-11-17 15:08:37

标签: amazon-s3 dns

我看到有几个人描述了如何为具有子域的自定义域执行此操作,但没有人谈论如何在没有子域的情况下执行此操作。

示例:Setting foobar.com and www.foobar.com to point to my Amazon S3–hosted site

我个人不想要www前缀。有没有办法让这件事发生?我似乎很疯狂亚马逊会将其设置为允许静态网站和自定义域名,然后将其锁定到带前缀的域名?

提前致谢,

3 个答案:

答案 0 :(得分:13)

由于历史原因,任何网址都需要解析为您已知道如何处理的子域:使用您的DNS提供商创建CNAME记录,将www指向您的S3托管子域。有正确的细节,在其他地方很好地描述。

但是,您仍然希望支持这样的用户,他们认为他们的浏览器会自动填充http://.com等等,想要输入裸域domain.com,并让它自动完成默认子域名,例如www.domain.com

实现此目的的最简单方法是使用www作为默认子域,并将您的DNS提供商的A记录指向wwwizer.com174.129.25.170)。他们会自动将任何裸域重定向到前面有www的同一个域。

如果您使用Amazon Route 53提供DNS服务,您可以获得最快的开发周期,并且您的访问者可以获得最快的DNS解析。路线53可以将其A记录指向wwwizer.com。但是,您可能想要创建一个微型Amazon EC2实例,并开始编程。在50年代,每个人都重建了自己的汽车。在80年代,每个人都在弗莱的过道上推着购物车,并建造了自己的电脑。现在,您希望能够在云中构建自己的计算机,出于多种原因,您会随着时间的推移发现,而Amazon EC2是最佳选择。目前,您的云计算机将简单地为您处理裸域。稍后,发送电子邮件,生成静态网站......

安装Apache Web服务器(LAMP中的A; LAMP服务器将执行此操作),并为每个域配置虚拟主机。然后在EC2实例上指向弹性IP地址,并更新Route 53以使A记录指向此弹性IP地址。亚马逊不支持将多个弹性IP指向同一个EC2实例,但您可以为多个域A记录提供相同的弹性IP,并让Apache在您的EC2实例中解析此问题。

这需要一些摆弄和实验,因为在细节上有很多相互矛盾的建议。我使用ami-ad36fbc4实例图像(US East,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。例如,可能需要在Listen 80中放置httpd.conf,但如果该命令已经在其他位置,则Apache会抛出错误。因此,请仔细阅读网页说明,并准备向Google发送任何错误消息。

由于我已经使用亚马逊Route 53连续几天指向wwwizer.com,所以当我更新Route 53以指向我的弹性IP时,这立即起作用。在切换到Route 53之前,每次更改都需要花费数天的时间来验证,因为信息在网络上传播。一旦每个人都知道要关注亚马逊,亚马逊就可以更快地传播其内部变化。

答案 1 :(得分:4)

很遗憾,您无法将foobar.com指向Amazon S3存储桶,其原因与DNS工作方式有关。

DNS不允许域的根(称为区域顶点)指向另一个DNS名称(您不能将foobar.com设置为CNAME / only subdomain.foobar.com可以是CNAME)

答案 2 :(得分:1)

由于这个问题被问到,事情发生了变化。现在可以使用根域在S3上托管您的站点。

您必须使用裸(根)域名创建另一个存储桶,而不是只有一个名为“www.yourserver.com”的存储桶。 “yourserver.com”。

之后,您将不得不使用亚马逊的DNS服务Route 53.为裸域创建A记录,为“www”主机名创建CNAME。

请注意,您需要完全将域的域管理移至Amazon Route 53。

请参阅此处详细介绍:http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html