【问题标题】:Forward HTTPS client ip from Google Container Engine从 Google Container Engine 转发 HTTPS 客户端 IP
【发布时间】:2017-03-11 16:43:04
【问题描述】:

我正在使用 Google Container Engine 在 docker 容器中运行 nginx 服务,该引擎将特定域名转发到其他服务,如 API、前端等。我有一个简单的集群用于配置服务。 Nginx 服务是负载均衡。

REMOTE_ADDR 环境变量始终包含 Kubernetes 集群中的内部地址。我寻找的是 HTTP_X_FORWARDED_FOR 但它在请求标头中丢失了。是否可以配置服务以在请求中保存外部客户端 ip?

【问题讨论】:

    标签: nginx http-headers kubernetes google-cloud-platform google-kubernetes-engine


    【解决方案1】:

    使用 L3 平衡的当前实现(从 Kubernetes 1.4 开始),无法获取连接到服务的源 IP 地址。

    听起来您的用例可以通过使用Ingress 对象(或通过手动创建HTTP/S load balancer)得到很好的服务,这会将源IP 地址放入X-Forwarded-For HTTP 标头中,以便于检索你的后端。

    【讨论】:

    • 我创建了 HTTPS 负载均衡器,但总是收到 502 错误,因为健康检查没有通过。是不是我的集群配置错误?
    • 您是否添加了防火墙规则以允许他们访问您的后端?
    • 是的,所以问题是我有防火墙规则来点击标签my-https 并且还对 IG 进行健康检查,组的健康检查不起作用,它会重新启动 VM 并删除标签用于防火墙规则。我在这些虚拟机上运行容器,实际上虚拟机上没有任何响应,但我有端口映射虚拟机 443->443(容器 Nginx),我认为这是一个问题。
    • 您是否为 IG 手动添加了健康检查?您允许来自哪个端口范围的运行状况检查以及它们检查的运行状况是什么?
    • 是的,我对 IG 进行了手动设置,它们正在通过 443,并且应该在 443 上使用 Nginx 命中容器。但据我所知,它无法映射到容器内的 443。但我已经在 Docker 中正确暴露了端口
    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 2017-04-07
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多