原创 istio 获取客户端 IP

istio 获取客户端 IP 和 K8S 获取客户端 IP 一致,因为 istio 对外暴露的流量是位于 istio-system namespace 下的 istio-ingressgateway Service。

所以只需要修改 istio-ingressgateway 的配置文件,添加该配置项 externalTrafficPolicy: Local

在获取客户端 IP 的代码中通过获取 X-Forwarded-For 来获取客户端的真实 IP。

具体详见 部署一个获取 HTTP Header 程序到 K8S 中的示例,该示例使用 istio 暴露对外的服务。

以下是请求该示例的 CURL 请求,可以看到你的客户端 IP 在 X-Forwarded-For 中显示出来了。

$ curl -4 https://dhcp.cn/header
UserAgent: curl/7.64.1
Protocol: HTTP/1.1
Method: GET
Host: dhcp.cn
RemoteAddr: 127.0.0.1:35100
RequestURI: /header
Body:
X-Forwarded-For: x.88.88.88
Accept: */*
Referer:

~$ curl https://dhcp.cn/header -I
HTTP/2 200
date: Tue, 01 Mar 2022 12:39:33 GMT
content-length: 179
content-type: text/plain; charset=utf-8
x-envoy-upstream-service-time: 1
server: istio-envoy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

使用 curl -4 是用来请求你的 IPv4 地址,因为本站是 IPv4/IPv6 双栈站点。

访客IP ,您的网络 访问优先

本站是个人博客,书写大数据、数据科学等领域的原创学习记录,转载请注明出处

本站运行于 腾讯云 腾讯云