如何配置Spring Cloud Gateway本地暴露Actuator端点并保留fallback路由
解决Spring Cloud Gateway Reactive版本Actuator端点本地处理问题
针对你遇到的问题,只需调整Actuator路由的URI配置并保证路由顺序即可解决,无需修改前端代码。具体方案如下:
1. 修改网关路由配置
将Actuator路由的uri改为forward:/,并确保该路由在fallback路由之前配置(Spring Cloud Gateway按路由定义顺序匹配,先匹配的路由生效):
cloud: gateway: routes: # 其他路由定义... # Actuator本地处理路由 - id: actuator uri: forward:/ predicates: - Path=/actuator/** # Fallback路由:仅匹配未被前面路由捕获的请求 - id: web-interface uri: lb://fallback predicates: - Path=/**
配置说明
forward:/会将请求直接转发到网关自身的Web处理链,不会再次触发路由转发逻辑,彻底避免无限循环。- 由于该路由优先级高于fallback的
/**路由,所有/actuator/**路径的请求都会被优先拦截并由网关本地处理。
2. 确保Actuator端点正常暴露
在网关配置中开启Prometheus端点的暴露:
management: endpoints: web: exposure: include: prometheus endpoint: prometheus: enabled: true
方案原理
Reactive版本的Spring Cloud Gateway不会自动将/actuator/**解析为本地端点,而MVC版本默认做了这个处理。通过forward:/的配置,我们手动让Actuator请求跳过网关的路由转发流程,直接进入自身的端点处理逻辑,同时保留了原有的fallback路由规则,无需改动前端代码。
内容的提问来源于stack exchange,提问作者Ken Krueger
相关产品推荐
相关产品推荐

