文档首页> 云容器引擎 CCE> 常见问题> 网络管理> 其他> 服务加入Istio后,如何获取客户端真实源IP?
更新时间:2022-05-06 GMT+08:00
分享

服务加入Istio后,如何获取客户端真实源IP?

问题现象

服务启用Istio后,访问日志获取到的客户端源IP全部变为127.0.0.1,如何获取到真实的源IP?

解决方案

本文以ELB类型Service加入服务网格的nginx应用为例,其他类型的Service方法类似,详细步骤如下:

  1. 创建ELB类型的Service(节点级别)。
  2. 加入Istio服务列表。
  3. 添加Istio服务网关并将service下istio-system命名空间下自动生成的Service改为节点级别。
  4. 在容器内进行nginx配置:

    配置路径为:/etc/nginx/conf.d/default.conf
    set_real_ip_from 100.0.0.0/8;
    set_real_ip_from 127.0.0.1;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;

  5. 集群所有节点加载TOA插件,这样就可以在容器中获取到源IP了。
  • 请求从客户端发出后,经过ELB转换了一次,然后到istio的时候会再转换一次,所以 set_real_ip_from 需要写两次转换的,然后就可以拿到真实IP了。
  • 当前后端服务为http协议时验证正常,服务端为https协议目前没有验证。
分享:

其他所有常见问题

more

close