Amazon S3-DNS 配置中的静态托管

我正在开发一个小的网络应用程序(都是客户端的) ,我想把它放在 Amazon S3上。我已经找到了几个关于这方面的指南,并设法创建了自己一个桶(与我的域名相同的名称) ,设置为一个网站,并上传一些内容。

在我挣扎的地方,以及所有文档开始变得有点模糊的地方,是如何正确配置我的 DNS。

我的注册商(123-reg)所能建议的只是网络转发,这给了我 mydomain.com.s3.amazonaws.com

What do I have to configure, and where (ie. 123-reg / Amazon) can I get a clean URL?

70565 次浏览

听起来你已经完成了大部分工作。为了清楚起见,我将重复这些步骤,只是为了确保你的设置正确:

  1. Create an s3 bucket using your domain name as the bucket name (your bucket name should be www.example.com if you want your site to be example.com or www.example.com)

  2. 将内容上传到 s3 bucket。为您的网站索引文件选择一个一致的名称(通常为 index.html)。您还可以上载用于404未发现错误的自定义页面。叫它 404.html。给予网站中每个文件的读取权限,以便公众可以查看它。不要给桶任何额外的权限,只给桶中的文件。

  3. 将桶配置为网站。使用 AWS 控制台(https://console.aws.amazon.com/s3/) ,您可以选择您的桶,单击属性,然后选择“网站”选项卡。单击启用并将索引文档设置为 index.html,错误文档设置为 404.html。您还需要设置您的桶访问权限,以允许通过网络访问(http://docs.amazonwebservices.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html)

  4. Take a note of the "Endpoint" URL in the website configuration tab. This is where your website lives. You can open the link in a new window and you should see your website just as it will look. Click around and make sure everything works as expected.

You MUST use the endpoint address in all steps below. The normal www.example.com.s3.amazonaws.com won't work - you need to use the regional version (http://www.example.com.s3-website-us-east-1.amazonaws.com/)

现在,我们可以设置 DNS 为您提供一个干净的自定义 URL。

首先,我们将把 www.example.com映射到您的站点。

使用您的 DNS 提供程序的工具(在您的情况下是123-reg) ,您需要创建一个 CNAME 记录来将 www.example.com映射到 www.example.com.s3-website-us-east-1.amazonaws.com

如果您只想要 www.example.com,那么 CNAME 是惟一需要的。大多数人也希望 example.com工作,所以我们需要另一个步骤。

example.com通常被称为裸域或域的顶点记录。它之所以成为问题,是因为它不能是 CNAME。CNAME 只能在“ www”这样的子域上工作这使得指向 s3变得更加困难。

通常的方法是使用一个服务来自动重定向到 example.com的任何请求以指向 www.example.com。然后,这将提取您的 CNAME 记录,您的站点将从 s3中提供服务。

自动重定向不可能与普通的旧 DNS,所以你必须使用其他服务。一些 DNS 提供商提供这种服务连同他们的 DNS (GoDaddy 做,亚马逊路线53没有。不确定123-reg)

如果您的 DNS 提供商不这样做,有一些免费的服务。我使用的一个是 http://wwwizer.com/naked-domain-redirect-它不需要任何注册或付款。

要使用这种类型的服务,您需要为您的裸域创建 DNS“ A”记录。对于 wwwizer.com服务,您需要创建一个 A 记录来将 example.com指向 174.129.25.170。仅此而已!

因此,在这种设置下,如果用户在浏览器中键入 example.com,将会发生以下情况:

  1. DNS 查询: example.com-> 174.129.25.170(www.wizer.com 的服务)
  2. 针对 example.com174.129.25.170发送 HTTP 请求
  3. 174.129.25.170重定向 example.com-> www.example.com
  4. DNS 查询: www.example.com-> CNAME to www.example.com.s3-website-us-east-1.amazonaws.com
  5. DNS 查询: www.example.com.s3-website-us-east-1.amazonaws.com-> 指向 Amazon S3
  6. www.example.com的 HTTP 请求现在由 AmazonS3提供

好好享受吧!

我相信您必须选择您的桶中的所有文档,右键单击,然后选择“公开”。您必须在桶中每次发生变化时也这样做。然后我通常右键点击桶,选择属性,选择权限在右侧面板,然后添加“每个人作为一个“授权”,然后只给他们“列表”的权限。你文章的其余部分很棒。关于裸域的部分帮助我解决了我的问题。你也可以将裸域重定向到 S3中的“静态网站托管”下的 www 域,这可能是最简单的方法。 再次感谢你的帮助。

提姆

从高级 DNS 屏幕上您的123-reg 控制面板

  • 我开始点击“重置 DNS”按钮到默认的123-reg 设置。

This gave me the following;

DNS EntryType       PriorityTTLDestination/Target
*                 A                                 81.xx.xx.xx              
@               A                                 81.xx.xx.xx              
@               MX          10               xx0.123-reg.co.uk
@               MX          20               xx1.123-reg.co.uk < br/>

  • 然后我添加了这个条目

www          CNAME                    www.example.com.s3-website-us-east-1.amazonaws.com

从他们的 管理 DNS 指南 pdf它说“@record”是指“你的领域在其最纯粹的形式没有子域名”即裸体域名 stackoverflow.com

但是它没有提到“ * record”是什么,我假设它将捕获所有子域,并认为它可能超越 CNAME 记录,但是这似乎并不是这种情况。

2019年最新情况

从今天起,以下 DNS 设置为我工作,让 AWS S3静态网站的工作:

DNS setting for bucket mapping