当应用程序服务器位于 api 网关和负载平衡器后面时确定原始请求 url

determine original request url when application server ist behind api-gateway and load-balancer

我有一个 tomcat 应用程序服务器,我需要来源 url,客户端调用以便为另一个资源发回 link。然而 URL 被 api-gateway 以及 api-gateway 之后的负载均衡器重新映射。 调用 requestContext.getUriInfo().getRequestUri() 时,我得到了无法从外部访问的应用程序服务器的内部 uri。

有没有办法获取名为 url 的原件?

重写 URL 的体面的网关或负载均衡器通常将原始 URL 的(部分)放入请求 header 中。具体哪个请求 header 名称取决于所使用的确切网关 and/or 负载均衡器,因为它还没有明确的标准(还没有?)。通常查阅其文档应该会提供线索,或者至少手动检查示例请求的 headers,如下所示:

List<String> headerNames = Collections.list(request.getHeaderNames());

for (String headerName : headerNames) {
    List<String> headerValues = Collections.list(request.getHeaders(headerName));
    System.out.println(headerName + " = " + headerValues);
}

根据评论,您已经发现它是 X-Replaced-PathX-Forwarded-Host