在Kubernetes上使用ingress控制器时,如何保留原始客户端IP?
我在文档中没有看到任何解决方案。
此链接已断开:http://ingress.kubernetes.io/preserve-host
从文档
默认情况下,NGINX使用报头X-Forwarded-For
的内容作为真相的来源来获得关于客户端IP地址的信息。如果我们使用可信外部负载均衡器的ip/网络地址的正确信息配置设置代理真实ip cidr,这在L7中不会出现问题。
如果入口控制器在AWS中运行,我们需要使用VPC IPv4 CIDR。
另一个选项是使用use-proxy-protocol: "true"
启用代理协议。
在这种模式下,NGINX不使用标头的内容来获取连接的源IP地址。
如果您使用L4代理将流量转发到NGINX pod并在那里终止HTTP/HTTPS,您将丢失远程端点的IP地址。为了防止这种情况,您可以使用代理协议来转发流量,这将在转发实际TCP连接之前发送连接详细信息。
AWS和HAProxy中的ELB支持代理协议。