Apache启用mod_cache后,基于IPv4/IPv6设置的自定义Header缓存异常问题求助
Apache启用mod_cache后,基于IPv4/IPv6设置的自定义Header缓存异常问题求助
大家好,我最近碰到个Apache配置的棘手问题,想请教下各位:
之前我用mod_header模块实现了根据请求的IP协议(IPv4/IPv6)返回不同自定义响应Header的逻辑,配置代码如下:
<If "%{IPV6} == 'on'"> Header always setifempty notice "you are using IPV6, keep up the good work" </If> <Else> <If "%{IPV6} == 'off'"> Header always setifempty notice "expr=it's %{TIME_YEAR} and you're still using IPV4, (snarky comment redacted)" </If> <Else> Header always setifempty notice "????how did you do that????" </Else> </Else>
这段配置本来运行得非常顺畅,但自从我启用mod_cache之后就出问题了——缓存会把这些自定义Header一起缓存下来,导致后续不同协议的请求拿到错误的Header。比如先有一个IPv4请求过来,响应被缓存;之后IPv6请求访问同一个资源时,直接命中缓存返回,完全没有重新执行Header的判断逻辑,结果IPv6用户拿到了IPv4的提示Header,反过来的情况也会发生,这完全不是我想要的效果。
我的需求是保留mod_cache,但要让它和这个自定义Header逻辑和平共处。目前我的mod_cache配置是这样的:
CacheSocache "shmcb:cache(2147483648)" CacheEnable socache /
我使用的Apache版本是2.4.52。
另外补充下,我后来已经尝试添加了CacheQuickHandler off,感觉这个配置可能是必要的,但单独加它并没有解决问题。我怀疑是不是过滤器链的顺序需要调整,但我对这部分不太熟悉,不知道该怎么操作。有没有大佬能给我指条明路?
备注:内容来源于stack exchange,提问作者Displayname71
相关产品推荐
相关产品推荐

