6

我有一个mysite.com通过 Netlify 托管的静态站点 ()。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 存储桶?

4

2 回答 2

8

免责声明:我为 Netlify 工作。

Netlify 旨在托管 Web 内容,而不是完全代理到 S3 存储桶。按照您的描述使用它可能有效,但违反了我们的服务条款,该条款明确规定我们打算托管带有 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 加载所有文件,但 /files/* 应该来自 S3,其路径与 URL 中 /files/ 之后的部分匹配”。在这种情况下,我们将为您处理 SSL 证书,因为我们终止了浏览器连接而不是 S3。

更多关于该功能的文档:

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

于 2018-03-15T23:28:46.727 回答
5

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

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

我会说你的选择是:

  1. 切换回使用 Route 53
  2. 在 S3 存储桶前使用 CloudFront
  3. 只需使用 S3 存储桶链接

(考虑到有多少浏览器掩盖了地址并且人们并不真正关心,我个人会选择选项 3。 )

于 2018-03-14T16:47:02.533 回答