【问题标题】:Kong :: Client IP missing in X-FORWARDED-FORKong :: X-FORWARDED-FOR 中缺少客户端 IP
【发布时间】:2021-01-23 05:15:02
【问题描述】:

在 Kubernetes 中使用 Kong 入口控制器 (v2.1)。在数字海洋中奔跑。

问题是 HTTPS 请求的 X-FORWARDED-FOR 标头中缺少客户端 IP,但在 HTTP 请求中存在。我还需要能够看到 HTTPS 请求上的 IP。

在 HTTP 请求的 X-FORWARDED-FOR 标头中收到的值为“, ”。 然而,在 HTTPS 请求的情况下,该值为“”。客户端 IP 丢失。

Kong 使用帮助安装。配置中最相关的部分是:

proxy:
  enabled: true
  http:
    enabled: true
  annotations:
    service.beta.kubernetes.io/do-loadbalancer-protocol: "http"
    service.beta.kubernetes.io/do-loadbalancer-algorithm: "round_robin"
    service.beta.kubernetes.io/do-loadbalancer-tls-ports: "443"
    service.beta.kubernetes.io/do-loadbalancer-tls-passthrough: "true"

【问题讨论】:

    标签: kubernetes kong x-forwarded-for


    【解决方案1】:

    问题在于 SLL 直通。使用此配置时无法修改标头。您应该使用 SSL 终止,除非您有一些特定的合规性要求。

    查看文档了解更多信息: https://www.digitalocean.com/docs/networking/load-balancers/how-to/ssl-passthrough/

    【讨论】:

    • 你说的有道理,但是我把passthrough设置改成了false,什么都没变。 service.beta.kubernetes.io/do-loadbalancer-tls-passthrough:“假”
    • 您需要将您的 SSL 证书上传到 LB 才能配置 SSL 终止 (digitalocean.com/docs/networking/load-balancers/how-to/…) 并传递 service.beta.kubernetes.io/do-loadbalancer-certificate-id 注释而不是 service.beta.kubernetes.io/do-loadbalancer-tls-passthrough
    • 你的方法是正确的。配置的 SSL 终止。但现在的问题是 DO LB 终止 SSL,然后向 Kong 代理的 HTTPS 端口发出 HTTP 请求。找不到将 LB 配置为 a) 向 Kong 代理的 HTTP 端口发送 HTTP 请求,或 b) 向 Kong 代理的 HTTPS 端口发送 HTTPS 请求的方法。请你看一下。谢谢! github.com/digitalocean/digitalocean-cloud-controller-manager/…
    猜你喜欢
    • 2021-06-08
    • 2014-04-23
    • 2021-05-25
    • 2018-06-14
    • 2016-02-17
    • 1970-01-01
    • 2013-10-22
    • 2014-10-27
    相关资源
    最近更新 更多