【问题标题】:Static hosting on Amazon S3 - DNS ConfigurationAmazon S3 上的静态托管 - DNS 配置
【发布时间】:2012-01-08 21:00:34
【问题描述】:

我正在开发一个小型 web 应用程序(所有客户端),我想将它托管在 Amazon S3 上。我找到了几个关于这方面的指南,并设法为自己创建了一个存储桶(与我的域同名),将其设置为网站并上传了一些内容。

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

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

我必须配置什么,我可以在哪里(即 123-reg / Amazon)获得干净的 URL?

【问题讨论】:

标签: dns amazon-s3 amazon-web-services hosting


【解决方案1】:

听起来您已经完成了大部分工作。为了清楚起见,我将再次检查这些步骤,以确保您已正确设置:

  1. 使用您的域名作为存储桶名称创建一个 s3 存储桶(如果您希望您的站点为 example.com 或 www.example.com,您的存储桶名称应为 www.example.com)

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

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

  4. 记下网站配置选项卡中的“端点”URL。这是您的网站所在的位置。您可以在新窗口中打开链接,您应该会看到您的网站的外观。到处点击并确保一切按预期工作。

您必须在以下所有步骤中使用端点地址。正常的 www.example.com.s3.amazonaws.com 将无法使用 - 您需要使用区域版本 (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 提供,amazon route53 不提供。不确定 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(wwwizer.com 的服务)
  2. 对 example.com 的 174.129.25.170 的 HTTP 请求
  3. 174.129.25.170 重定向 example.com -> www.example.com
  4. DNS 查询:www.example.com -> CNAME 到 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 请求现在由 Amazon S3 提供服务

享受吧!

【讨论】:

  • 非常感谢所有这些内容的清晰性!我已经进行了更改,只是等待它正确,手指交叉一切都会起作用。
  • 嗯,似乎仍然无法正常工作。这是 DNS 配置的屏幕截图 - cl.ly/CP6U 最后的点似乎很可疑,我没有在其中添加它,并且将该 URL 放在浏览器中,并在最后给我一个桶未找到的错误。我尝试删除它,但保存后它又回来了,我尝试用 / 替换它,但随后出现无效错误。您认为这可能是 123-regs 结束时的问题吗?
  • 您好 Merlin,我尝试查找您的域名 (wpfill.me),但在您的屏幕截图中没有看到任何记录。 123-reg 是否有单独的“发布”或“提交”步骤?你的配置好像没有生效。
  • 嗯,我认为 123-reg 一定有问题,我尝试重置 DNS 记录并等待它传播 48 小时,但仍然没有乐趣。然后,我将 DNS 托管切换到 Cloudflare,并在 20 分钟内启动并运行了整个系统 :) 感谢您的帮助,非常感谢!
【解决方案2】:

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

提姆

【讨论】:

  • 如果您如上所述应用存储桶策略,则无需执行此手动步骤。
【解决方案3】:

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

  • 我首先单击“重置 DNS”按钮以使用默认的 123-reg 设置。

这给了我以下信息;

DNS 条目类型       优先级TTL目的地/目标
*                A                                81.xx.xx.xx           bd>  
A                                 81.xx.xx.xx             
@               >MX          10               xx0.123-reg.co.uk
@               MX          20               xx1.123-reg.co.uk

  • 然后我添加了这个条目

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

从他们的Manage DNS guide pdf 看来,“@ 记录”指的是“您的域以其最纯粹的形式,没有子域”,即裸域 stackoverflow.com

但它没有提到“*记录”是什么,我认为它会捕获所有子域并认为它可能会覆盖 CNAME 记录,但事实并非如此。

【讨论】:

    【解决方案4】:

    2019 年更新

    截至今天,以下 DNS 设置为我工作,让 AWS S3 静态网站正常工作:

    【讨论】:

      猜你喜欢
      • 2017-07-20
      • 2013-01-18
      • 2017-03-23
      • 2013-06-20
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多