【问题标题】:How to get client ip in Kubernetes hosted application?如何在 Kubernetes 托管应用程序中获取客户端 IP?
【发布时间】:2021-01-19 18:28:50
【问题描述】:

我有一个由几个微服务组成的应用程序。 UI 通过 Nginx 提供服务,并通过反向代理访问 API。这是使用 Rancher 部署的本地 Kubernetes。

UI 服务是 NodePort,因此我可以在集群外部访问它,API 可以是 NodePort 或 ClusterIP。在 API 微服务中有一个 IP 记录器,它始终显示部署 UI 的节点的 IP,无论我在做什么。

到目前为止,我确实为 NodePort 服务尝试了“externalTrafficPolicy:Local”,并结合设置 Nginx 标头(X-Forwarded-For 和 X-Forwarded-Proto)进行反向代理。似乎没有任何效果。

是否可以在 Kubernetes 中托管的应用程序中获取客户端 IP?

Kubernetes 版本:v1.17.3

牧场主 v2.3.4

【问题讨论】:

    标签: nginx kubernetes rancher


    【解决方案1】:

    您需要使用externalTrafficPolicy: Local,然后查看实际的REMOTE_ADDRESS 或您的网络框架所称的任何名称。

    【讨论】:

    • 我完全按照问题中所写的那样做了。我粗略的猜测是 NGINX 入口导致它,因为它是我的服务之前唯一的事情。
    • 哦,你不是说你在使用入口,你说的是“通过 Nginx 服务”?您必须专门配置任何代理才能意识到这一点。
    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 2014-02-21
    相关资源
    最近更新 更多