如何通过CNAME将Netlify子域指向AWS S3存储桶?

时间:2018-03-14 16:34:50

标签: amazon-web-services amazon-s3 amazon-route53 cname netlify

我有一个通过Netlify托管的静态网站(mysite.com)。 Netlify目前管理我的DNS,所以我有这样的名字服务器:

  • dns1.p07.nsone.net
  • dns2.p07.nsone.net
  • dns3.p07.nsone.net
  • dns4.p07.nsone.net

我的S3上有一个名为dl.mysite.com的存储桶。我想拥有它,以便当有人点击http://dl.mysite.com/file.pdf之类的链接时,它会从S3存储桶中获取它。

在我的Netlify管理信息中心内,我可以创建自定义子域名(dl.mysite.com),并指示我执行以下操作:

  

dl CNAME记录指向obfuscated-url-d6f26e.netlify.com登录   到您的DNS提供商帐户,并添加CNAME记录   dl指向obfuscated-url-d6f26e.netlify.com

过去,当我独家使用AWS来托管应用程序并管理DNS时,只需在Route53中为子域创建别名记录并将其指向我的存储桶即可轻松完成。

如果Route53无法处理我的DNS,我怎么能做到这一点?是否仍然可以将该子域指向特定的S3存储桶?

2 个答案:

答案 0 :(得分:5)

免责声明:我为Netlify工作。

Netlify旨在托管Web内容,而不是完全代理S3存储桶。如你所描述的那样使用它可能有效,但是反对我们的terms of service,它明确声明我们打算托管带有html内容的网站供人们浏览,而不是计算机。如果这就是你想要做的所有 - 从S3桶中提供内容,那么我就不会在这里完全使用Netlify的中间步骤了。这是另一个失败点,对我们介绍访问者和S3之间没什么好处。另一种合理的方法是@thomas上面建议的方式。

但是,如果您因为我们为您托管其他网站而想为您的域使用Netlify的DNS托管,您绝对仍然可以使用我们的DNS设置直接指向S3的主机名 - 没有服务条款违规因为我们不限制您使用我们的DNS服务。许多客户让我们为netlify上有一个网站和其他地方有十几个网站的域提供DNS。为了配置它,我将该记录设置为S3主机名的CNAME,并处理AWS方面的任何SSL证书。这将很好,如果不是,我们的技术支持团队将很乐意帮助您。

在第三种情况下,如果您想在S3的主机名上提供某些内容(例如PDF),然后是其他一些内容(例如链接到PDF的网站html文件),那就是合法的!我们很乐意代理您的S3内容。例如,您可以在/files/*文件中在S3上设置(反向)代理到/_redirects

/files/* http://aws-bucket-hostname/:splat 200!

这说“加载来自Netlify EXCEPT / files / *的所有文件,而不是来自S3,其路径与URL中的/ files /之后的部分相匹配”。在这种情况下,我们将为您处理SSL证书,因为我们终止了浏览器连接而不是S3。

此处有关于该功能的更多文档:

https://www.netlify.com/docs/redirects/

答案 1 :(得分:3)

为了在S3上使用静态主机(允许您的存储桶成为域名),您只能在Route 53上使用别名。

但是,您可以使用CloudFront使用您选择的域名来提供文件。

我想说你的选择是:

  1. 切换回使用Route 53
  2. 在S3存储桶前面使用CloudFront
  3. 只需使用S3存储桶链接
  4. (考虑到有多少浏览器掩盖了地址并且人们并不真正关心,我会选择3 个人。)