所以我有这样的设置:
AWS NLB(向前)-> Istio-> Nginx吊舱
现在,我正在尝试在Istio层实施速率限制。我点击了this链接。但是,我仍然可以请求比配置更多的API。查看更多内容,我在Nginx中记录了X-Forwarded-For标头,它为空。
那么,当我使用NLB时如何在Istio中获得客户端IP? NLB转发客户端IP,但是如何?在标题中?
编辑:
Istio版本:1.2.5
istio-ingressgateway配置为NodePort类型。
答案 0 :(得分:1)
根据有关网络负载平衡器的AWS documentation:
网络负载平衡器在开放系统互连(OSI)模型的第四层起作用。它每秒可以处理数百万个请求。负载均衡器收到连接请求后,它将从目标组中选择一个目标作为默认规则。它会尝试在侦听器配置中指定的端口上打开到所选目标的TCP连接。
...
在创建目标组时,请指定其目标类型,该类型确定是通过实例ID还是IP地址注册目标。如果按实例ID注册目标,则客户端的源IP地址将保留并提供给您的应用程序。如果按IP地址注册目标,则源IP地址是负载均衡器节点的专用IP地址。
使用NLB时,有两种保留客户端IP地址的方法:
1 .: NLB在源地址中保留客户端IP地址 通过实例ID注册目标时。
因此,客户端IP地址仅在特定的NLB配置中可用。您可以在aws documentation中阅读有关目标组的更多信息。
2 .:代理协议标头。
可以用于发送其他数据,例如标头中的源IP地址。即使您通过IP地址指定目标。
您可以按照aws documentation的指南和示例来配置代理协议。
要使用控制台启用代理协议
通过https://console.aws.amazon.com/ec2/打开Amazon EC2控制台。
在导航窗格中的负载平衡下,选择目标组。
选择目标组。
选择说明,编辑属性。
选择启用代理协议v2 ,然后选择保存。