如何让Kubernetes服务负载均衡基于客户端IP而不是NGINX反向代理IP

问题描述

我已将 Nginx 配置为反向代理,并为具有多个副本的后端 Web 应用程序启用了 Web 套接字。来自 Nginx 的请求对 Kubernetes 服务执行 proxy_pass,该服务反过来将请求负载平衡到映射到该服务的端点。我需要确保来自特定客户端的请求在访问的生命周期内被代理到同一个 Kubernetes 后端 pod,基本上保持会话持久性。

尝试在 Kubernetes 服务中设置 sessionAffinity: ClientIP,但这会根据 Nginx 代理的客户端 IP 进行路由。有没有办法让 Kubernetes 服务根据发出请求的实际客户端 IP 而不是 Nginx 内部 pod IP 进行关联?

解决方法

这不是 Nginx 的选项。或者更确切地说,在没有很多非常花哨的网络操作的情况下,像这样的用户空间中的任何东西都不是一个选项。您需要找到另一个选项,通常是最外层 HTTP 代理层中特定于应用的代理规则。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...