【发布时间】:2021-11-10 21:38:43
【问题描述】:
我有一个云负载 balancer/virtual server/firewall 坐在一组 Quarkus pod 前面,几乎就像一个反向代理。流量通过该公共入口点进入并重新路由到内部网络。
我们正在使用 Azure B2C 登录应用程序,当您直接访问 pod 或内部负载均衡器时效果很好。
问题在于,当使用外部负载均衡器时,重定向 uri 位于内部网络的上下文中,无法从公共端访问。
有没有办法将重定向到我们外部服务器的 uri 设置为绝对 uri 而不是相对的?文档很清楚它是相对的,但我没有看到任何将其重定向到自定义 uri 的方法。还是在安全方面这是一种完全错误的方法?我知道我可以尝试重新配置外部负载均衡器,但想要一种快速设置重定向 uri 的方法。我知道这在其他框架中是可能的。
这行得通:
https://pod1:8080
这也有效:
https://internal-load-balancer:8080
这不起作用:
https://external-load-balancer:8080
(重定向 uri 是内部负载平衡器)
如果有帮助,请提供其他信息。我们正在使用身份验证代码流,quarkus-oidc 自动将重定向 url 设置为相对路径。我不确定是否有办法将重定向 uri 覆盖到我们的外部负载均衡器而不是内部。
已解决: 我必须配置 x-forwarded/reverse 代理来读取原始源:
【问题讨论】:
-
您确定外部负载均衡器可以在 quarkus pod 中使用该 dns 名称访问吗?你能用 ping 检查一下吗
-
是的。我们正在做一个 http 标头重定向以在内部路由外部流量。问题是内部应用程序认为重定向 uri 自动是内部名称(因为那是它运行的地方),我无法覆盖重定向 uri。在内部,如果我调用外部 url,我将被重定向到内部并且可以工作,但在外部,该内部 url 不可访问。
-
你是在 kubernetes 集群中运行这个吗?
-
是的。 “内部网络”是一个 Kubernetes 集群。永恒的网络是我们的入口点。我联系了 quarkus 聊天室,他们为我指出了正确的方向。这是反向代理配置:quarkus.io/guides/…> 以及将我带到我需要的地方的消息:quarkusio.zulipchat.com/#narrow/stream/187030-users/topic/…>
标签: quarkus quarkus-oidc