SpringCloud Alibaba 整合Gateway网关

Spring Cloud 提供了一个在Spring WebFlux之上构建API网关的组件。 Spring Cloud Gateway 提供一种简单而有效的方式来路由到API,并为它们提供横切关注点,如:安全性、监控/指标和弹性。

添加Maven依赖

<!-- Springcloud Gateway 依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>

<!-- Springcloud Nacos 注册中心依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- Springcloud 本地负载均衡依赖,通过注册中心获取服务,需要加入此依赖 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

配置Gateway

断言详细文档:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-request-predicates-factories
过滤器详细文档:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gatewayfilter-factories

server:
  port: 8087

spring:
  application:
    name: gateway-server

  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        group: DEFAULT_GROUP
        namespace: public
        username: nacos
        password: nacos

    gateway:
      routes:
        - id: user-route # 路由ID,唯一标识,自定义命名
          uri: lb://gateway-user # 从注册中心获取服务
          predicates:
            # 路径断言工厂,符合 /user-server 前缀的请求都会被转发
            - Path=/user-server/**
          filters:
            # 去除路径前缀
            - StripPrefix=1

      # gateway跨域配置
      globalcors:
        cors-configurations:
          '[/**]':
            allowed-origins:
              - "*"
            allowed-methods: 
              - GET
              - POST
              - PUT
              - DELETE
            allowed-headers: 
              - "*"
            allowed-origin-patterns:
              - "*"
            max-age: 3600

      # 设置全局超时时间
      httpclient:
        connect-timeout: 1000 # 连接超时时间
        response-timeout: 5s # 响应超时时间

访问网关服务:http://网关IP端口/user-server/sayhello
配置了 StripPrefix 后会将一级路径去掉,最终网关转发地址:http://网关IP端口/sayhello
请求就会转发至配置的注册中心的 gateway-user 服务中。

猜你喜欢

转载自blog.csdn.net/weixin_42270645/article/details/123652401