gpt4 book ai didi

ssl - 在 NGINX-Ingress 上使用 session 亲和性(Cookie)和 SSL 直通

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:04 26 4
gpt4 key购买 nike

TL;DR:我想在 K8s 中通过带有 SSL 直通的 nginx-ingress Controller 设置基于 cookie 的 session 亲和性 - 这可以做到吗?


大家好,

我有一个正在运行的 Azure Kubernetes 服务 (AKS) (1.11.3) 并且配置了 NGINX-Ingress Controller 将请求路由到我的应用程序的 ClusterIP 服务(至少运行 2 个 pod)。

我已在入口 Controller 上成功配置 SSL 直通,以便 TLS 在 Pod 处终止,因此我可以使用 HTTP2(根据此 article)。现在我想设置 Session Affinity(使用 Cookie),以便将连接路由到同一个 pod 以进行有状态行为(登录到应用程序)。

为此,我尝试在入口对象上使用以下注释:

nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"

但是,我没有看到第一个请求返回的“路由”cookie。我已经解决了描述的问题 here并确保入口设置正确。然后我在 docs 上发现了这条消息:

Because SSL Passthrough works on layer 4 of the OSI model (TCP) and not on the layer 7 (HTTP), using SSL Passthrough invalidates all the other annotations set on an Ingress object.

:这是否意味着将 session 亲和性与 SSL 直通结合使用是不可能的? Ingress 将无法识别连接/cookie(因为它是 SSL 加密的)并将其定向到先前关联的 pod?

最佳答案

简短回答:不,这是不可能的。第 4 层不知道什么是 http,它只是看到字节来回流动。您可以改用基于 ip 地址的亲和性,而不是使用 cookie,因为它需要第 7 层代理解决方案。根据您的情况,您可以在第 7 层运行一个代理,它能够解密流量,然后使用另一个证书对其进行加密以供内部使用。所有有效负载(例如减去 SNI)都没有按照 SSL 进行加密,这意味着为了对 cookie 进行某种关联,代理需要在检查数据之前对其进行解密。

关于ssl - 在 NGINX-Ingress 上使用 session 亲和性(Cookie)和 SSL 直通,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com