Zuul Gateway 服务器在本地处理请求

Handling of requests locally by Zuul Gateway server

如何让 Spring 启动 Zuul 代理服务器在本地处理特定请求,而不是将其代理到其他服务器?
假设我想通过 API 对 Zuul 代理服务器本身进行自定义健康检查,这应该 return 本地响应,而不是 return 来自其他远程服务器的代理响应。

转发请求需要什么样的路由配置?

以下是我发现的并且对我有用:

1) 创建本地请求处理程序:
在 Zuul 代理服务器代码

的文件中添加带有 RequestMapping 的常规 Controller/RestController
@RestController
public class LocalRequestHandler {
    @GetMapping(path = "/status", produces = MediaType.TEXT_PLAIN_VALUE);
    private static ResponseEntity<String> getServiceStatus() {
        String status = "I am alive";
        return ResponseEntity.ok().body(status);
    }
}

2) 在定义其他路由的配置文件(application.properties或视情况而定)中创建本地转发路由。在我的例子中,Spring Boot Zuul Proxy 服务器是 运行 在以 GatewaySvc 作为应用程序上下文的 Jetty 容器上。

zuul.routes.gatewaysvc.path=/GatewaySvc/status
zuul.routes.gatewaysvc.url=forward:/GatewaySvc/status 

对于我尚未测试的独立 Spring 引导,您可能必须从上述配置中删除上下文路径。

zuul.routes.gatewaysvc.path=/status
zuul.routes.gatewaysvc.url=forward:/status

参考: Strangulation Patterns and Local Forwards