0

当入站请求中存在授权标头时,它始终是缓存未命中。我的要求是,我需要 ATSAuthorization像对待任何其他标头一样对待标头(它不应该导致缓存未命中,它应该被转发到上游服务)。我怎样才能做到这一点。

这听起来可能不安全,但是,我有一个特定的用例。此缓存供内部使用,它的访问由其他方式控制。

我试过这个

根据官方文档

默认情况下,Traffic Server 不缓存具有以下请求头的对象:

授权

缓存控制:无存储

缓存控制:无缓存

配置 Traffic Server 忽略这个请求头,

在 records.config 中编辑 proxy.config.http.cache.ignore_client_no_cache。

CONFIG proxy.config.http.cache.ignore_client_no_cache INT 1 运行命令 traffic_ctl config reload 以应用配置更改。

但是,没有运气

4

2 回答 2

0

实际上这个https://docs.trafficserver.apache.org/en/latest/admin-guide/configuration/cache-basics.en.html#configuring-traffic-server-to-ignore-www-authenticate-headers成功了为了我。

Authorization除了Header 之外,以下说明也适用于header WWW-Authenticate。他们需要更新文档。

配置 Traffic Server 忽略 WWW-Authenticate Headers

默认情况下,Traffic Server 不缓存包含 WWW-Authenticate 响应头的对象。WWW-Authenticate 标头包含客户端在准备对源服务器的身份验证质询响应时使用的身份验证参数。

当您将 Traffic Server 配置为忽略源服务器WWW-Authenticate头时,所有带有WWW-Authenticate头的对象都存储在缓存中以供将来请求使用。WWW-Authenticate但是,在大多数情况下,不缓存带有标头的对象的默认行为是合适的。WWW-Authenticate如果您了解 HTTP 1.1,请仅将 Traffic Server 配置为忽略服务器标头。

配置 Traffic Server 忽略服务器WWW-Authenticate头:

proxy.config.http.cache.ignore_authentication中编辑records.config

CONFIG proxy.config.http.cache.ignore_authentication INT 1

运行命令traffic_ctl config reload以应用配置更改。

于 2018-03-27T15:44:53.160 回答
0

如果您的源返回带有 'public' 指令(例如,“Cache-Control: max-age=60,public”)或包含 s-maxage 指令(例如,“Cache-Control: s -maxage=60"),ATS 应该开始缓存对象。相关的 http RFC: https ://www.rfc-editor.org/rfc/rfc2616#section-14.8

When a shared cache (see section 13.7) receives a request
  containing an Authorization field, it MUST NOT return the
  corresponding response as a reply to any other request, unless one
  of the following specific exceptions holds:
  1. If the response includes the "s-maxage" cache-control
     directive, the cache MAY use that response

... 3. 如果响应包含“公共”缓存控制指令,它可能会被返回以响应任何后续请求。

同样,您也可以使用 header_rewrite 插件从请求中删除 Authorization 标头,或添加 public/s-maxage。

于 2018-03-26T17:24:23.887 回答