如何限制 AWS CloudFront 使其仅处理来自我域中单个目录的请求?
How do I limit AWS CloudFont so that it only serves requests from a single directory on my domain?
我已经完成了创建 CloudFront 分配的过程,其中原始域名指向我的主要 Rails 应用程序,其中资产(图像、css、js 等)位于 /assets
.
但是,默认情况下,CloudFront 分发镜像整个域(包括动态页面)。
如何将其限制为仅 /assets
子树?
PS这是我正在关注的文章:
https://devcenter.heroku.com/articles/using-amazon-cloudfront-cdn
谢谢!
由于无法(afaik)删除默认缓存行为,这似乎是一个聪明的 "serverless" 解决方案:
在 S3 中创建一个存储桶。名字无关紧要。不要在里面放任何东西。
向您的 CloudFront 分配添加第二个源,选择新存储桶作为源。
创建第二个缓存行为,路径模式 /assets/*
指向您的原始来源。
更改默认缓存行为以使用新的 S3 来源(未使用的空存储桶)。
CloudFront 会将 /assets/*
的请求转发到您现有的服务器,它们将在此处像现在一样处理,但所有其他请求将发送到没有内容的空存储桶,并且没有权限,所以响应将是 403 Forbidden
.
可选地,将适当的 "robots.txt" 文件添加到那个原本为空的存储桶,并使其公开可读,这样 CloudFront 会将其提供给访问您的 CloudFront 分配的任何爬虫,不允许他们从索引中移除,这应该有希望提示他们删除任何已经索引的结果,而不是尝试索引资产或他们可能已经通过在 "wrong" [=47= 处抓取先前暴露的内容而学习的任何其他路径].
我已经完成了创建 CloudFront 分配的过程,其中原始域名指向我的主要 Rails 应用程序,其中资产(图像、css、js 等)位于 /assets
.
但是,默认情况下,CloudFront 分发镜像整个域(包括动态页面)。
如何将其限制为仅 /assets
子树?
PS这是我正在关注的文章:
https://devcenter.heroku.com/articles/using-amazon-cloudfront-cdn
谢谢!
由于无法(afaik)删除默认缓存行为,这似乎是一个聪明的 "serverless" 解决方案:
在 S3 中创建一个存储桶。名字无关紧要。不要在里面放任何东西。
向您的 CloudFront 分配添加第二个源,选择新存储桶作为源。
创建第二个缓存行为,路径模式
/assets/*
指向您的原始来源。更改默认缓存行为以使用新的 S3 来源(未使用的空存储桶)。
CloudFront 会将
/assets/*
的请求转发到您现有的服务器,它们将在此处像现在一样处理,但所有其他请求将发送到没有内容的空存储桶,并且没有权限,所以响应将是403 Forbidden
.可选地,将适当的 "robots.txt" 文件添加到那个原本为空的存储桶,并使其公开可读,这样 CloudFront 会将其提供给访问您的 CloudFront 分配的任何爬虫,不允许他们从索引中移除,这应该有希望提示他们删除任何已经索引的结果,而不是尝试索引资产或他们可能已经通过在 "wrong" [=47= 处抓取先前暴露的内容而学习的任何其他路径].