美文网首页
搭建Gateway网关

搭建Gateway网关

作者: 侧耳倾听y | 来源:发表于2022-02-17 00:17 被阅读0次

    1. 添加依赖

    
    <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>    
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>
    
    </dependencies>
    

    2. 配置文件

    server:
      port: 30000
    spring:
      application:
        name: gateway
      cloud:
        nacos:
          # Nacos配置项
          discovery:
            server-addr: localhost:8848
            heart-beat-interval: 5000
            heart-beat-timeout: 15000
            cluster-name: Cluster-A
            namespace: dev
            group: myGroup
            register-enabled: true
        gateway:
          discovery:
            locator:
              # 创建默认路由,以"/服务名称/接口地址"的格式规则进行转发
              # Nacos服务名称本来就是小写,但Eureka默认大写
              enabled: true
              lower-case-service-id: true
          # 跨域配置
          globalcors:
            cors-configurations:
              '[/**]':
                # 授信地址列表
                allowed-origins:
                  - "http://localhost:8808"
                # cookie, authorization认证信息
                expose-headers: "*"
                allowed-methods: "*"
                allow-credentials: true
                allowed-headers: "*"
                # 浏览器缓存时间
                max-age: 1000          
    

    此处注意跨域配置中的几个参数的含义。

    参数 含义
    allowed-origins 可以被信任的来源地址list
    expose-headers Response Hearder 中可以被暴露的Header
    allowed-methods 支持跨域的Http Method
    allowed-credentials 跨域请求默认不带cookie
    allowed-headers 允许接收的Request Header 属性

    3. 定义路由规则

    声明路由有三种方式,分别是JAVA代码、配置文件、和动态路由,此处使用JAVA代码声明

    
    @Configuration
    public class RoutesConfiguration {
    
        @Bean
        public RouteLocator declare(RouteLocatorBuilder builder) {
            return builder.routes()
                    .route(route -> route
                            .path("/gateway/manage/**")
                          // stripPrefix 过滤器,将 path 访问路径中的第一个前置子路径删除掉
                            .filters(f -> f.stripPrefix(1))
                          // lb会负载均衡,后面是在nacos注册的服务名称
                            .uri("lb://manage-serv")
                    )
                ).build();
        }
    }
    
    

    添加一个项目启动的类,启动之后,就可以作为一个网关了。

    相关文章

      网友评论

          本文标题:搭建Gateway网关

          本文链接:https://www.haomeiwen.com/subject/aqjjlrtx.html