我想在 GKE 集群中运行 HTTP(S) 代理服务,并利用现有的 Kubernetes 入口和 GCP 负载均衡器为该服务提供 TLS 终止和稳定的公共 IP。客户端将使用基本身份验证通过公共互联网访问代理。
到目前为止我遇到了三个问题:
- 为代理配置 HTTP 健康检查比较棘手,因为健康检查只能使用相对路径(例如
GET /
)进行配置,并且代理仅响应对完全限定 URL 的请求(例如`GEThttp://www.example.com)。我可以通过修改(开源)代理服务器实现来解决这个问题,在相对 URL 上添加健康检查。 - 类似地,URL 映射需要相对路径,以“/”开头。我可以通过将代理服务指定为入口的默认后端来解决这个问题,当所有主机/路径规则均不匹配时使用。
- 这就是我陷入困境的地方。负载均衡器似乎剥离了
Proxy-Authorization
标头由客户端发送。因此,当请求到达代理服务器时,它们缺少 auth 标头,并失败并显示407 Proxy Authentication Required
。
显然,禁用代理上的身份验证不是一个选项。我还没有找到任何文档承认负载均衡器会删除此标头,或者为什么会这样做。
答案1
您正尝试将这种类型的平衡器用于其设计目的之外的事情。GCP HTTP 负载平衡器是反向 HTTP 代理 - 它们不是正向代理的前端。到目前为止,您所做的工作基本上是偶然的。
我建议你的应用程序实际上需要一个TCP 负载均衡器而不是 HTTP。