Py学习  »  NGINX

在NGINX入口上对SSL Passthrough使用会话关联(Cookies)

Matt Woodward • 4 年前 • 481 次点击  

TL;博士


大家好,

我有一个运行中的Azure Kubernetes服务(AKS)正在运行(1.11.3),并且已经配置了 NGINX-Ingress

我已经成功地在入口控制器上配置了SSL passthrough,以便TLS在Pods处终止,因此我可以使用HTTP2(根据这个 article ). 现在我想设置会话关联(使用Cookies),以便将连接路由到同一个pod进行有状态行为(登录到应用程序)。

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

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"

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

不在第7层(HTTP)上,使用SSL Passthrough会使所有 在入口对象上设置的其他注释。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55418
 
481 次点击  
文章 [ 1 ]  |  最新文章 4 年前
user1086801
Reply   •   1 楼
user1086801    5 年前

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