【Nacos】做配置中心的情况下,如果nacos和客户端中间挂了SLB(k8s ipvs)。在nacos的监听查询里查到的是slb的地址,而不是客户端的真实ip。这里能像服务注册场景里,由客户端自己设置ip吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Nacos作为配置中心的场景中,如果客户端与Nacos之间通过SLB(如Kubernetes IPVS服务)通信,通常查询到的是SLB的地址而非客户端的真实IP。虽然直接设置客户端真实IP至Nacos监听查询的功能不像服务注册那样直接内置支持,但可以通过配置SLB及客户端来间接实现这一需求。
对于部署在Kubernetes环境中的SLB(如使用ipvs模式的Service),可以采取以下措施:
X-Forwarded-For
或X-Original-Forwarded-For
头部信息。按照之前提及的步骤,编辑Nginx Ingress Controller的配置文件kube-system/nginx-configuration
,添加相关配置项以启用并正确处理转发头信息。X-Forwarded-For
或X-Original-Forwarded-For
)来解析出真实客户端IP。具体实现方式依赖于客户端使用的编程语言和框架,但通常涉及检查请求头,并根据其中的转发信息覆盖默认的远程地址识别逻辑。Kubernetes Nginx Ingress配置示例: 请参考之前的步骤进行配置文件的修改,确保compute-full-forwarded-for
, forwarded-for-header
, 和 use-forwarded-headers
设置正确。
客户端应用代码示例(以Java Spring Boot应用为例): 在Spring Boot应用中,可以通过自定义WebFilter
或利用现成的中间件库来解析X-Forwarded-For
头部,从而获取并记录真实客户端IP。
尽管Nacos本身不直接提供客户端自设IP至监听查询的功能,但通过合理配置SLB和服务端应用,可以有效解决获取客户端真实IP的问题。关键在于确保SLB正确传递IP信息,并且客户端应用能够识别并利用这些信息。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。