我创建了一个具有以下路径定义的入口控制器配置:
paths:
- path: (USA)/my-app/(.*)$
...............
- path: (UK)/my-app/(.*)$
这里发生的问题是当我没有设置以下注释时;
nginx.ingress.kubernetes.io/session-cookie-path
我在入口cookie路径中得到正则表达式为:
cookie-name: INGRESSCOOKIE --------cookie-path: /(USA)/my-app/(.*)$
这是来自给定的路径,即/(USA(/my-app/(.*($。
因此,来自入口的此响应 Cookie 不会返回到入口,以用于任何后续 http://USA/my-app/?id=1 请求。(因为 HTTP 请求路径与 INGRESSCOOKIE 中的路径不同(
由于此HTTP请求有时会命中不同的上游服务器并且用户注销;因为请求中的会话ID是由通过同一负载平衡器管理的不同服务器生成的。
然后我尝试将注释设置为:
nginx.ingress.kubernetes.io/session-cookie-path= /$1/my-app
但是 $1 实际上并没有在这里解决;可能我们不能在会话 cookie 路径中给出表达式。
我在这里有什么不对的地方吗?或者,我应该尝试其他方法来实现会话亲和力。
谢谢
我知道这已经很老了,但无论如何都想分享我的观点。
对于您的问题,您可能需要尝试以下注释:nginx.ingress.kubernetes.io/use-regex
请从注释中删除"会话cookie路径",因为会话cookie路径不支持正则表达式
欲了解更多信息,请访问以下链接:
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#use-regex https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#cookie-affinity