【问题标题】:How can I specify a path pattern of "/" in a CloudFront behavior?如何在 CloudFront 行为中指定路径模式“/”?
【发布时间】: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


【解决方案1】:

答案是路径模式为“/”的缓存行为只匹配根 url。在这种特殊情况下,用户还有一个默认的根对象集,该对象集在行为模式之前被匹配。如果您希望使用 '/' 模式在根 url 上定义缓存行为,则需要删除默认根对象。

【讨论】:

    猜你喜欢
    • 2020-08-25
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2014-10-14
    • 2019-09-02
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    相关资源
    最近更新 更多