避免在 Amazon CloudFront CDN 上创建动态 HTML 页面

避免在 Amazon CloudFront CDN 上创建动态 HTML 页面

我正在考虑使用 CloudFront 发行版作为 CDN 来为我的图像、css 和 js 提供服务。我有一个 CloudFront 发行版设置,指向我的代码所在的服务器中的同一目录,只需将子域更改为 cdn 即可cdn.domain.com

我的问题是,这个 CDN 子域也会切断 HTML 和 php 链接,而我并不想这样做。我只想使用 Cloudfront 图像、css 和 js。

您能告诉我正确的方法吗?有没有办法在 CloudFront 面板中执行此操作?

我认为一旦调用到达原始服务器,我们就可以从 htaccess 服务器获取 404 页面,但我正在寻找一个更好的选项,可以真正阻止请求到达原始服务器。

答案1

CloudFront 非常适合提供动态 html。即使页面未缓存,它对用户(尤其是远程用户)来说也更快,因为它使用的是亚马逊的主干网而不是公共互联网,后者针对这项工作进行了优化。它可以保护您的服务器免受第 4 层(TCP)和第 7 层(http)攻击。如果您使用 http/2,则使用单个域会更快,这CloudFront 支持因为 http/2 允许您在客户端知道需要这些资源之前就发送呈现页面所需的资源。

对于 HTML,将 TTL 设置为 0,对于静态资源,显然将其设置为更高的值。

看看这个Re:Invent 会议欲了解更多信息,或优秀的文档

答案2

在 S3 中创建一个空存储桶。名称无关紧要。将其作为第二个源添加到 CloudFront 分发版。重新配置默认缓存行为以将所有请求发送到存储桶。

然后,为您希望 CloudFront 从您的服务器提供的路径模式创建新的缓存行为,指向您的自定义源。路径模式的示例包括/*.css/*.js/*.png*通配符可匹配路径中的任何字符,包括额外的斜杠,因此这些文件将由 CloudFront 提供,其他任何内容都会从虚拟存储桶中收到“访问被拒绝”XML 消息。

加分点:如果您为网站托管配置虚拟存储桶,并在创建新的 S3 源时使用网站端点主机名(而不是从下拉列表中选择存储桶),则可以为存储桶配置默认错误页面并显示该 HTML 而不是拒绝访问...或者您可以配置存储桶以使用 S3 重定向路由规则将任何到达的请求重定向回您的非 CDN 域。

相关内容