具有基本身份验证的 GCP 负载均衡器后面的 HTTP 代理服务器

具有基本身份验证的 GCP 负载均衡器后面的 HTTP 代理服务器

我想在 GKE 集群中运行 HTTP(S) 代理服务,并利用现有的 Kubernetes 入口和 GCP 负载均衡器为该服务提供 TLS 终止和稳定的公共 IP。客户端将使用基本身份验证通过公共互联网访问代理。

到目前为止我遇到了三个问题:

  1. 为代理配置 HTTP 健康检查比较棘手,因为健康检查只能使用相对路径(例如GET /)进行配置,并且代理仅响应对完全限定 URL 的请求(例如`GEThttp://www.example.com)。我可以通过修改(开源)代理服务器实现来解决这个问题,在相对 URL 上添加健康检查。
  2. 类似地,URL 映射需要相对路径,以“/”开头。我可以通过将代理服务指定为入口的默认后端来解决这个问题,当所有主机/路径规则均不匹配时使用。
  3. 这就是我陷入困境的地方。负载均衡器似乎剥离了Proxy-Authorization标头由客户端发送。因此,当请求到达代理服务器时,它们缺少 auth 标头,并失败并显示407 Proxy Authentication Required

显然,禁用代理上的身份验证不是一个选项。我还没有找到任何文档承认负载均衡器会删除此标头,或者为什么会这样做。

答案1

您正尝试将这种类型的平衡器用于其设计目的之外的事情。GCP HTTP 负载平衡器是反向 HTTP 代理 - 它们不是正向代理的前端。到目前为止,您所做的工作基本上是偶然的。

我建议你的应用程序实际上需要一个TCP 负载均衡器而不是 HTTP。

答案2

是的,HTTP(S) 负载均衡器默认与 4 配合使用。但您可以创建“用户定义的请求标头”。请查看链接1链接2

相关内容