【发布时间】:2016-11-02 07:24:00
【问题描述】:
我有一个具有 S3 源的 CloudFront 分配。我想创建一种行为,以便对站点根路径的请求将使用不同的来源(网络服务)。
所以理想情况下我的行为应该是:
- "/" - 网络服务来源
- 默认 (*) - S3 存储桶
但是,上述方法似乎不起作用 - 第一个行为没有捕获根请求。
有什么方法可以使用路径模式完成我想要的吗?
【问题讨论】:
-
我希望
/能够做到这一点,但我会进行测试。测试时,您确实确认没有看到缓存的响应,我接受了吗?假设它不起作用(尽管它看起来应该),那么您也许可以做相反的事情,将默认的*行为转到站点服务器,然后使用/?*将其他所有内容发送到存储桶,因为这应该捕获在/之后带有一个或多个字符的所有内容。 -
否 - 存储桶的根目录中没有页面,所以我只收到了我在 S3 存储桶中定义的错误页面(因此可能不会缓存此响应)。我应该提到 - 我已经尝试过反转条件并将默认行为转到 web 服务的方法,但这也不起作用。即使我将第一个行为的模式指定为“/???*”之类的东西,根请求仍会被该行为捕获,并且不会陷入默认的 * 行为。
-
CloudFront does cache errors。检查
Age:标头的响应标头。如果存在,这就是 CloudFront 缓存您正在查看的响应的时间(以秒为单位)。 -
我无法复制您报告的行为。我已经确认路径模式
/仅与根匹配,将其发送到一个来源,而默认行为上的*将其他所有内容发送到另一个来源。但是...您是否为分发设置了default root object?如果是这样,则在路径模式匹配之前 进行评估,这将解释该行为。这个选项并不像许多人认为的那样。 -
是的,就是它——默认的根对象。如果您想将其添加为答案,我会接受。谢谢。
标签: amazon-web-services amazon-cloudfront