1

它将是一个后端应用程序,它公开一些 REST 端点并可以调用其他后端。此应用程序在一台主机上运行。我想在同一主机上运行其他应用程序 - Sidecar。它应该: 1) Sidecar 应该接收后端应用程序的所有传出流量以添加额外的身份验证标头。2) Sidecar 应该接收所有传入流量并检查 auth 标头然后转发到后端应用程序。

Sidecar 应该是 spring-boot 应用程序。我要选择-Spring 云网关。

解决 1)我将通过代理调用所有后端应用程序请求 - 代理是 Sidecar 云 GW 解决 2)我将只公开接收所有传入流量并转发到后端应用程序的 Sidecar 端点 /**

下一个代码适用于当后端应用程序发起传出请求并使用 Sidecar 作为代理时

@SpringBootApplication
@RestController
public class DemoApplication {

public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
}

@RequestMapping("/**")
public Mono<ResponseEntity<byte[]>> proxy(ProxyExchange<byte[]> proxy, ServerHttpRequest serverHttpRequest) throws Exception {
    return proxy.uri(serverHttpRequest.getURI().toString()).forward();
}
}

同时上面的代码会拦截所有外部传入的请求并再次发送到 Sidecar,导致无限循环。

任何建议如何编写 Sidecar(Spring 云网关),一方面它将用作传出请求的代理,另一方面将所有传入请求转发到后端应用程序

谢谢

4

0 回答 0