配置HTTP路由转发规则

在Spring Cloud Gateway中配置HTTP路由可以通过application.yml或Java DSL实现。以下是一个YAML配置示例:

spring:
  cloud:
    gateway:
      routes:
        - id: http-service
          uri: http://backend-service:8080
          predicates:
            - Path=/api/**
          filters:
            - StripPrefix=1
  • id: 路由的唯一标识符
  • uri: 目标服务地址
  • predicates: 使用Path匹配以/api开头的请求
  • filters: StripPrefix=1去掉路径中的第一级(即去掉/api

配置WebSocket路由转发规则

WebSocket路由配置与HTTP类似,但需要注意协议升级。以下示例配置WebSocket代理:

spring:
  cloud:
    gateway:
      routes:
        - id: websocket-service
          uri: ws://chat-service:8081
          predicates:
            - Path=/chat/**
  • 协议需使用ws://wss://
  • WebSocket不需要额外的过滤器处理协议升级,Gateway会自动处理

动态路由配置

通过RouteLocator Bean可实现Java代码配置:

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
        .route("http_route", r -> r.path("/service/**")
            .uri("http://http-service"))
        .route("ws_route", r -> r.path("/ws/**")
            .uri("ws://websocket-service"))
        .build();
}

注意事项

  • HTTP和WebSocket路由可以共存于同一Gateway实例
  • WebSocket需要确保目标服务支持协议升级
  • 生产环境建议为WebSocket配置SetResponseHeader=Sec-WebSocket-Accept过滤器处理响应头
  • 负载均衡可通过lb://service-id格式结合服务发现实现
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐