不能。mod_socache_memcache仅提供key-value缓存后端,不处理认证逻辑;必须与mod_authn_socache和mod_auth_basic配合,并正确配置CacheProvider、AuthnCacheSOCache及AuthnCacheTimeout才能缓存Basic Auth结果。

mod_socache_memcache 能不能直接缓存 Basic Auth 结果
不能。它只提供共享内存缓存的「后端能力」,不自带认证逻辑;必须配合 mod_authn_socache 和 mod_auth_basic 才能缓存用户名/密码校验结果。单独启用 mod_socache_memcache 对认证毫无作用。
为什么用 memcache 而不是 shmcb 做认证缓存
当 Apache 部署在多台机器上(比如负载均衡后),shmcb 的共享内存只在单机有效,各节点重复查数据库或 LDAP;而 memcache 是中心化服务,所有节点共用同一份认证缓存,避免 N 台服务器各自重建相同用户条目。但代价是引入网络调用和额外运维点——如果只是单机部署,shmcb 更轻量、更低延迟。
认证缓存必须配齐的三要素
缺一不可,否则缓存静默失效:
-
LoadModule socache_memcache_module modules/mod_socache_memcache.so(注意模块名是socache_memcache,不是authn_memcache) -
AuthnCacheSOCache memcache(值必须与CacheProvider别名一致) -
CacheProvider memcache:127.0.0.1:11211(地址必须可连通,且 memcached 服务已启动)
常见错误:漏掉 CacheProvider 指令,或写成 memcache://127.0.0.1:11211 —— Apache 不认这种 URL 格式,会直接跳过缓存逻辑。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
缓存条目过期时间怎么设才合理
AuthnCacheTimeout 控制的是「认证结果」缓存多久,不是用户登录态有效期。建议设为 300(5 分钟)到 1800(30 分钟)之间:
- 太短(如 60 秒)→ 缓存命中率低,压力没减轻
- 太长(如 86400)→ 密码改了或账号禁用了,用户还能凭旧缓存继续登录
- 若后端认证源本身有强时效要求(如 OAuth token 2 小时过期),
AuthnCacheTimeout不应超过其一半
别忘了加 MemcacheConnTTL 30s,防止空闲连接堆积拖慢 memcached 响应。
真正容易被忽略的是:缓存生效的前提是认证流程走到了 mod_authn_socache 这一层。如果配置里混用了 AuthType Digest 或自定义脚本校验,那 AuthnCacheSOCache 完全不介入——得先确认日志里出现 authn_socache: using cache provider 'memcache' 这类提示,才算真正跑起来了。

















