问题描述
它将是一个后端应用程序,它公开一些REST终结点并可以调用其他后端。 该应用程序在一台主机上运行。我想在同一主机上运行其他应用程序-Sidecar。这应该: 1)Sidecar应该接收后端应用程序的所有传出流量,以添加其他身份验证标头。 2)Sidecar应该会收到所有传入流量,并检查auth标头,然后转发到Backend应用。
Sidecar应该是spring-boot应用程序。我将选择-Spring云网关。
解决1)我将通过代理调用所有后端应用程序请求-代理是Sidecar cloud 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云网关),一方面将它用作传出请求的代理,另一方面将所有传入请求转发到后端应用程序
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)