You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

K8s 1.14.5中nginx-ingress-controller缓存禁用及已吊销token异常返回解决

Nginx Ingress 缓存失效问题解决步骤

该版本(nginx-ingress-controller:0.21.0-rancher3)为Rancher定制的旧版本Ingress Controller,默认未针对带Authorization头的鉴权请求做缓存豁免,且与官方新版Ingress的缓存控制注解不兼容,是你尝试配置禁用缓存不生效的核心原因。

第一步:确认缓存命中情况

先添加如下注解验证响应是否来自Ingress缓存:

nginx.ingress.kubernetes.io/configuration-snippet: |
  add_header X-Cache-Status $upstream_cache_status always;

使用已吊销的token请求Ingress域名,查看响应头中X-Cache-Status的值:

  • 值为HIT:确认是Ingress缓存导致的问题
  • 值为MISS/BYPASS:需要排查Ingress上层CDN/WAF缓存、请求头被篡改等其他问题

第二步:适配该版本的缓存禁用配置

不要使用官方新版的nginx.ingress.kubernetes.io/cache-enabled: "false"注解,该版本不支持,直接通过自定义配置片段全量禁用对应接口的缓存:

nginx.ingress.kubernetes.io/configuration-snippet: |
  # 强制跳过缓存读取、不写入缓存
  proxy_no_cache 1;
  proxy_cache_bypass 1;
  # 缓存Key加入Authorization头,避免不同token共用缓存
  proxy_cache_key "$host$request_uri$http_authorization";
  # 强制返回不缓存的响应头,避免上层节点缓存
  add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0" always;

如果仅需要针对userinfo接口生效,可以在配置片段外层加路径匹配规则,避免影响其他业务接口。

第三步:异常场景排查

如果配置后问题仍未解决,按如下顺序排查:

  • 检查Ingress Controller全局配置:进入Ingress Controller Pod查看/etc/nginx/nginx.conf,确认是否有全局强制开启的缓存规则,如有需要修改Ingress Controller对应的ConfigMap删除全局缓存配置
  • 排除上层缓存:直接在集群节点上curl Inress Controller Pod的IP+服务端口模拟外部请求,排除Ingress上层的负载均衡、WAF、CDN等中间层缓存的影响
  • 确认请求头透传:检查是否有配置丢弃Authorization头,添加如下注解强制透传鉴权头:
nginx.ingress.kubernetes.io/pass-headers: "Authorization"

内容的提问来源于stack exchange,提问作者hossein bazrafkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:15:07