Nacos集成GateWay网关实现动态路由、跨域请求等

一、引入nacos和gateway依赖包:

    <dependencies>
        <!-- gateway -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
 
        <!-- nacos客户端 依赖 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
 
    </dependencies>
 
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

注意:不需要引入web依赖,否则启动服务会报错。因为gateway内部集成了Netty服务器

二、yml文件配置:

server:
  port: 8000
 
spring:
  application:
    name: gateway-server
  cloud:
    # nacos 注册中心
    nacos:
      discovery:
        server-addr: http://localhost:8848
        username: nacos
        password: nacos
    # 动态路由
    gateway:
      discovery:
        locator:
          enabled: true   # 开启服务发现让gateway可以发现注册中心的服务,解析微服务名称为主机名和端口,实现动态路由
          # lowerCaseServiceId: true  # 请求服务是小写的时候改成true(默认为false轻微服务必须是大写)
 
      # 路线
      routes:
          # 账户模块服务
        - id: seata-account-service         # 路由Id,没有规则限制,但要唯一
          uri: lb://seata-account-service   # 断言成功后提供的路由地址,lb为负载均衡
          predicates:
            - Path=/account/**              # 断言规则,注意需要和 tomcat servlet容器上下文路径对应
 
          # 订单模块服务
        - id: seata-order-service         # 路由Id,没有规则限制,但要唯一
          uri: lb://seata-order-service   # 断言成功后提供的路由地址,lb为负载均衡
          predicates:
            - Path=/order/**              # 断言规则,注意需要和 tomcat servlet容器上下文路径对应
 
          # 库存模块服务
        - id: seata-storage-service         # 路由Id,没有规则限制,但要唯一
          uri: lb://seata-storage-service   # 断言成功后提供的路由地址,lb为负载均衡
          predicates:
            - Path=/storage/**              # 断言规则,注意需要和 tomcat servlet容器上下文路径对应
 
      # 处理跨域请求
      globalcors:
        corsConfigurations:
          '[/**]':
            allowedHeaders: "*"
            allowedOrigins: "*"
            allowCredentials: true
            allowedMethods:
              - GET
              - POST
              - DELETE
              - PUT
              - OPTION

注意:predicates的断言规则路径需要和服务的 tomcat servlet容器上下文路径对应,否则无法路由

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容