Spring Boot 通过集成 Spring Cloud Gateway 构建统一网关,需新建独立模块并引入 gateway、loadbalancer、Nacos discovery 和 security 等依赖,配置静态或服务名路由(如 lb://user-service)、Path 断言与 RewritePath 过滤器,实现统一认证(JWT/OAuth2)、全局过滤器透传用户信息,并补充跨域、限流、监控与熔断能力。

Spring Boot 通过集成 Spring Cloud Gateway 构建统一网关,核心是让所有外部请求先经过网关,再由网关按规则路由、过滤、鉴权后转发到后端微服务。这不是简单加个依赖就能跑通的事,关键在于职责划分清晰、配置准确、安全逻辑前置。
创建网关模块并引入核心依赖
新建一个独立的 Spring Boot 模块(如 gateway-service),在 pom.xml 中引入必要依赖:
-
spring-cloud-starter-gateway:网关核心,提供路由和过滤能力 -
spring-cloud-starter-loadbalancer:支持服务发现后的负载均衡(如调用 Nacos 或 Eureka 注册的服务) -
spring-cloud-starter-alibaba-nacos-discovery(可选):若使用 Nacos 做服务注册与发现 -
spring-boot-starter-security(可选):用于网关层统一认证拦截(如 JWT 校验、OAuth2 资源服务器模式)
配置基础路由规则
在 application.yml 中定义静态或动态路由。例如将 /api/user/** 请求转发到用户服务:
在 macOS 上通过 LaunchAgent 安装、更新、运行和移除 OpenClaw Gateway Monitor + Gateway Watchdog。适用于用户请求一键部署监控的场景。
- 静态地址转发(开发调试用):
uri: http://localhost:8081(直接写死服务地址) - 服务名转发(生产推荐):
uri: lb://user-service(lb表示启用负载均衡,user-service是注册在 Nacos/Eureka 中的服务名) - 配套断言(Predicate)常用
Path:- Path=/api/user/**,匹配路径前缀 - 可加路径重写过滤器(Filter):
- RewritePath=/api/user/(?<segment>.*), /$\{segment},把前缀去掉再转发
实现网关层统一认证
避免每个微服务重复校验 token,把鉴权逻辑收口到网关:
立即学习“Java免费学习笔记(深入)”;
- 若后端服务已用 JWT,网关可作为 OAuth2 Resource Server,配置
spring.security.oauth2.resourceserver.jwt.issuer-uri指向授权服务器地址,自动校验签名与有效期 - 若采用 OAuth2.1 授权码模式,网关也可作为 OAuth2 Client,配合 Spring Authorization Server 完成登录跳转、token 获取与刷新
- 自定义全局过滤器(GlobalFilter)提取 Header 中的
Authorization,校验 token 合法性,并将用户 ID、角色等信息以请求头形式透传给下游服务(如X-User-Id)
补充关键能力配置
真实项目中还需叠加以下能力提升健壮性:
-
跨域支持:在网关配置
spring.cloud.gateway.globalcors,统一处理前端跨域请求 - 限流保护:集成 Sentinel 或 Resilience4j,基于 Route ID 或用户维度控制 QPS
-
日志与监控:开启 Actuator 端点(
gateway,prometheus),结合 Prometheus + Grafana 观察路由成功率、延迟、错误率 - 熔断降级:为关键路由配置 Hystrix 或 Spring Cloud CircuitBreaker,防止下游故障拖垮网关

















