我有一个通过 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
),它指导我执行以下操作:Point
dl
CNAME record toobfuscated-url-d6f26e.netlify.com
Log in to the account you have with your DNS provider, and add a CNAME record fordl
pointing toobfuscated-url-d6f26e.netlify.com
.
过去,当我专门使用 AWS 来托管应用程序和管理 DNS 时,只需在 Route53 中为子域创建别名记录并将其指向我的存储桶即可轻松实现。
既然 Route53 不处理我的 DNS,我该如何实现?是否仍然可以将该子域指向特定的 S3 存储桶?
最佳答案
免责声明:我为 Netlify 工作。
Netlify 旨在托管 Web 内容,而不是完全代理到 S3 存储桶。按照您的描述使用它可能会起作用,但与我们的 terms of service 背道而驰,其中明确指出我们打算托管带有 html 内容的网站供人们而不是计算机浏览。如果这就是您想要做的所有事情 - 从该 S3 存储桶中提供内容,那么我根本不会在这里使用 Netlify 的中间步骤。这是另一个失败点,将我们置于您的访问者和 S3 之间并没有给您带来太多好处。一种更合理的方法是上面@thomas 建议的方式。
但是,如果您想为您的域使用 Netlify 的 DNS 托管,因为我们为您托管其他站点,您绝对仍然可以使用我们的 DNS 来设置直接指向 S3 的主机名 - 没有违反服务条款,因为我们不要限制您使用我们的 DNS 服务。许多客户让我们为域名托管 DNS,其中 netlify 上有一个网站,其他地方有十几个网站。为了进行配置,我将该记录设置为 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/
关于amazon-web-services - 如何通过 CNAME 将 Netlify 子域指向 AWS S3 存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283171/