繁体   English   中英

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

[英]Static hosting on Amazon S3 - DNS Configuration

我正在开发一个小型webapp(所有客户端)我想在Amazon S3上托管它。 我已经找到了几个这方面的指南,并设法创建了一个桶(与我的域名相同),将其设置为网站并上传一些内容。

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

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

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

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

  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”。 您还需要设置具有访问权限的存储桶,以允许通过Web访问( 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. 现在,Amazon S3会为www.example.com提供HTTP请求

请享用!

我相信您必须选择存储桶中的所有文档,右键单击,然后选择“公开”。 每次桶中的某些变化时,您都必须这样做。 然后我通常右键单击存储桶,选择属性,在右侧窗格中选择权限,然后添加“Everyone as a”grantee“,然后只给它们”list“权限。你的文章的其余部分非常好。关于裸域的部分帮助我可以解决我的问题。您也可以将裸域重定向到S3中“静态网站托管”下的www域。这可能是最简单的方法。再次感谢您的帮助。

蒂姆

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

  • 我首先点击“重置DNS”按钮,进入默认的123-reg设置。

这给了我以下内容;

DNS条目 类型 优先级 TTL 目的地/目标
* A.                      81.xx.xx.xx
@ 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

从他们的管理DNS指南pdf中可以看出,“@ record”是指“你的域名是最纯粹的,没有子域名”,即裸域stackoverflow.com

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

更新2019年

截至今天,随着DNS设置让我使AWS S3静态网站正常工作:

存储桶映射的DNS设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM