CDN-Loop 头部¶
CDN-Loop 头部过滤器参与 RFC 8586 定义的 cross-CDN 循环检测协议。 CDN-Loop 头部过滤器有两个作用。首先,过滤器会检测 CDN-Loop 头部中特定的 CDN 标识出现过的次数。 其次,在通过第一步校验后,过滤器会在 CDN-Loop 头部中追加一个 CDN 标识,然后将请求传递给下游过滤器。如果校验失败, 过滤器会终止该请求的处理并返回一个包含错误信息的响应。
RFC 8586 在如何修改 CDN-Loop 头部方面有特别的规定。例如:
过滤器会将多个 CDN-Loop 头部合并成一个,以逗号分隔。
配置¶
此过滤器的名称应该被配置为 envoy.filters.http.cdn_loop 。
过滤器配置 有两个字段。
cdn_id 字段设置过滤器查找和追加在 CDN-Loop 头部中的标识; RFC 8586 称该字段为 “cdn-id”; “cdn-id” 可以是 CDN 提供的、可控的化名或主机名。cdn_id 字段必须非空。
max_allowed_occurrences 字段控制下游请求 CDN-Loop 头部中 cdn_id 可以出现的次数。 (在过滤器追加 cdn_id 到头部前) 如果头部中 cdn_id 出现的次数大于 max_allowed_occurrences, 过滤器将拒绝此次下游请求。大多数用户应将 max_allowed_occurrences 设置为 0 (默认值)。
响应码详情¶
名称 |
HTTP 状态 |
描述 |
---|---|---|
invalid_cdn_loop_header |
400 (错误的请求) |
下游系统的 CDN-Loop 头部无效或无法转义。 |
cdn_loop_detected |
502 (错误网关) |
CDN-Loop 头部中 cdn_id 的值超过了 max_allowed_occurrences,说明在 CDN 中存在循环。 |