代理缓存动作

除了《代理请求 URI 动作》和《代理请求报头动作》中介绍代理动作,OpenResty Edge 还提供了更多的代理动作。

启用代理缓存重新校验

这个动作用于启用:使用带有 “If-Modified-Since “和 “If-None-Match “头域的条件性请求,对过期的缓存项目进行重新验证。

使用代理缓存旧数据

这个动作用于决定在哪些情况下可以在与代理服务器的通信中使用陈旧的缓存响应。例如,当请求出现 504 错误时,使用旧的缓存进行响应。

绕过代理缓存

启用该动作 (proxy-cache-bypass) 后,响应将不会从缓存中读取。

这个动作在 26.6.15-1 首次引入。

代理不缓存

启用该动作 (proxy-no-cache) 后,来自上游服务器的响应将不会被保存到缓存中。

这个动作在 26.6.15-1 首次引入。

跟随 HTTP 重定向

跟随 HTTP 重定向动作的配置项

该动作会跟随当前上游返回的 HTTP 或 HTTPS 重定向。当上游响应包含非空的 Location 响应头时,该动作会处理 301302303307308 状态码。每个请求最多跟随一次重定向;如果重定向目标再次返回 3xx 响应, Edge 会将该响应直接返回给客户端。

优势与适用场景

该动作由 Edge 节点代替客户端跟随上游重定向,并将重定向目标的响应直接 返回给客户端。这样可以避免额外的客户端重定向往返,简化客户端逻辑,并减少 向客户端暴露上游重定向目标的需要。

常见的适用场景包括:

  • 上游将文件下载、图片或其他静态资源重定向到可信的对象存储或 CDN 主机。
  • 上游服务迁移了路径或主机名,但希望客户端仍通过原有 Edge 端点获取最终响应。
  • 代理 API 或下载服务时,客户端无法或不应直接访问重定向目标。

可以配置以下选项:

  • 凭据策略:控制是否将原请求中的凭据请求头转发给重定向目标。 Same Origin 是默认值,仅当协议、主机名和有效端口均未改变时保留凭据; Omit 始终移除凭据;Include 即使在跨源重定向时也会保留凭据。
  • 敏感请求头:可选。用于将应用自定义的请求头加入凭据请求头集合, 这些请求头会遵循上述凭据策略。内置凭据请求头包括 AuthorizationProxy-AuthorizationCookieCookie2
  • 允许的重定向主机:可选的目标主机名允许列表。如果重定向改变了主机名, 只有当目标主机名在列表中时才会跟随,否则请求以 502 状态码失败。 主机名未改变的重定向始终允许。留空时允许重定向到任意主机。

对于 303 响应,除 HEAD 外的请求方法会转换为 GET,并移除请求体。 对于 301302 响应,POST 会转换为 GET,并移除请求体。 其他组合(包括 307308)会保留原请求方法和请求体。

安全提示: 该动作允许跨源重定向,上游可以让 Edge 节点访问其能够到达的 任意 HTTP 或 HTTPS 地址。仅应为可信上游启用该动作,或将“允许的重定向主机” 设置为尽可能严格的允许列表。仅在明确需要且确认安全时,才应在跨源重定向中使用 Include 转发凭据。

该动作在 OpenResty Edge 26.9.1-1 中首次引入。有关完整的行为说明,请参阅 EdgeLang follow-http-redirect 文档。