当入站请求中出现Authorization标头时,它始终是Cache Miss。我的要求是,我需要ATS像任何其他标头一样处理Authorization
标头(它不应该导致高速缓存未命中和它应该转发到上游服务)。我怎样才能做到这一点。
这可能听起来不安全,但是,我有一个特定的用例。此缓存供内部使用,其访问权限由其他方式控制。
我试过这个
默认情况下,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以应用配置更改。
但是,没有运气
答案 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)
除了Authorization
标题之外,以下说明适用于WWW-Authenticate
标题。他们需要更新文档。
默认情况下,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
以应用配置更改。