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

为何Kubernetes Ingress会修改浏览器中的JWT Token?

问题根源

你遇到的问题核心是Ingress Nginx的会话亲和Cookie与你的JWT Cookie重名。当配置nginx.ingress.kubernetes.io/session-cookie-name: PostIt时,Ingress会自动维护这个名称的Cookie用于会话亲和逻辑,直接覆盖了后端生成的JWT Cookie值,导致后端收到的是Ingress生成的亲和标识而非原始JWT。

解决方案

方案1:修改会话亲和Cookie名称(推荐)

将Ingress的会话亲和Cookie名改为与JWT Cookie不同的名称,避免冲突。修改Ingress注解中的session-cookie-name:

nginx.ingress.kubernetes.io/session-cookie-name: PostIt-Affinity

保留其他会话亲和配置(如果需要会话亲和功能),这样Ingress会生成独立的亲和Cookie,你的JWT CookiePostIt会完整传递到后端服务。

方案2:禁用会话亲和(无需该功能时)

如果后端服务是无状态的,不需要固定请求到同一Pod,直接移除所有会话亲和相关注解:

# 移除以下所有注解
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/session-cookie-name: PostIt
nginx.ingress.kubernetes.io/session-cookie-path: "/"
nginx.ingress.kubernetes.io/session-cookie-expires: "900"
nginx.ingress.kubernetes.io/session-cookie-max-age: "900"
nginx.ingress.kubernetes.io/session-cookie-samesite: None
nginx.ingress.kubernetes.io/session-cookie-conditional-samesite-none: "true"
nginx.ingress.kubernetes.io/session-cookie-secure: "true"
nginx.ingress.kubernetes.io/affinity-mode: persistent

修改后Ingress不会修改任何Cookie,JWT会原样传递到后端。

验证

更新Ingress配置后重新应用:

kubectl apply -f your-ingress-config.yaml

再次测试请求,后端服务即可收到原始的JWT Cookie值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:44:52