当请求中存在Authorization标头时,其'始终是缓存小姐

时间:2018-03-23 20:39:54

标签: caching apache-traffic-server

当入站请求中出现Authorization标头时,它始终是Cache Miss。我的要求是,我需要ATS像任何其他标头一样处理Authorization标头(它不应该导致高速缓存未命中和它应该转发到上游服务)。我怎样才能做到这一点。

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

我试过这个

根据official documentation

  

默认情况下,Traffic Server不会使用以下内容缓存对象   请求标题:

     

授权

     

Cache-Control:no-store

     

缓存控制:无缓存

     

要将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以应用配置更改。

但是,没有运气

2 个答案:

答案 0 :(得分:0)

如果你的origin返回带有'public'指令的缓存控制头(例如,“Cache-Control:max-age = 60,public”)或包含s-maxage指令(例如,“Cache-控制:s-maxage = 60“),ATS应该开始缓存对象。相关的http RFC: https://tools.ietf.org/html/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。

答案 1 :(得分:0)

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

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

配置流量服务器以忽略WWW身份验证标头

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

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

配置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以应用配置更改。