<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      gateway配置

      【網(wǎng)關(guān)系統(tǒng)框架】腳手架項目

      概述

      【網(wǎng)關(guān)系統(tǒng)框架】項目是一個腳手架項目,來幫助開發(fā)同事快速搭建一個完整結(jié)構(gòu)的網(wǎng)關(guān)層項目,開發(fā)者在生成的項目基礎(chǔ)上進(jìn)行開發(fā)即可,以提高開發(fā)效率和代碼質(zhì)量。

      【網(wǎng)關(guān)系統(tǒng)框架】項目功能主要體現(xiàn)在:

      • 不必從零開始搭建初始項目,提高開發(fā)效率
      • 路由功能
      • token認(rèn)證 和 URL鑒權(quán)
      • 限流功能
      • 路徑重寫
      • 跨域配置
      • 通過 Feign 調(diào)用下游系統(tǒng)接口

      路由功能

      1、基于 Path 路徑的路由斷言

      PathRoutePredicateFactory : 接收一個正則列表,根據(jù)路徑進(jìn)行匹配,如果滿足規(guī)則,則轉(zhuǎn)發(fā)到配置的 uri 地址

      spring:
        cloud:
          gateway:
            routes:
              - id: path_route
                # 路由跳轉(zhuǎn)地址
                uri: https://www.csdn.net
                predicates:
                  - Path=/blog/{segment}, /edu/**
      

      如上:/blog/1/blog/java/edu/php 等請求都將被匹配。

      URI 模板變量 (如上例中的 segment ) 將以 Map 鍵值的方式保存于 ServerWebExchange.getAttributes() 中,
      可以在 GatewayFilterFactory 中使用。

      Map<String, String> uriVariables = ServerWebExchangeUtils.getUriTemplateVariables(exchange);
      String segment = uriVariables.get("segment");
      

      2、基于 Query 請求參數(shù)的路由斷言

      QueryRoutePredicateFactory : 接收兩個參數(shù),一個請求參數(shù)(必傳)和一個正則表達(dá)式(可選),判斷請求參數(shù)是否具有給定名稱且值與正則表達(dá)式匹配。

      spring:
        cloud:
          gateway:
            routes:
              - id: query_route
                uri: https://www.csdn.net
                predicates:
                  # - Query=blog
                  - Query=blog, java.*
      

      如上,- Query=blog 會匹配包含請求參數(shù) blog 的請求;
      - Query=blog, java.* 會匹配請求中包含參數(shù) blog,并且值以 java 開頭(java / java1 / java123 等)的請求。

      3、基于 Method 請求方式的路由斷言

      MethodRoutePredicateFactory : 匹配一個或多個 HTTP 請求方式(GET / POST / PUT / DELETE / HEAD 等)

      spring:
        cloud:
          gateway:
            routes:
              - id: method_route
                uri: https://www.csdn.net
                predicates:
                  - Method: GET,POST
      

      所有 GET 請求和 POST 請求都將被路由

      4、基于 Datetime 日期時間的路由斷言

      此類型的斷言根據(jù)時間做判斷,主要有三個:

      1. AfterRoutePredicateFactory : 接收一個日期參數(shù),判斷請求日期是否晚于指定日期
      2. BeforeRoutePredicateFactory : 接收一個日期參數(shù),判斷請求日期是否早于指定日期
      3. BetweenRoutePredicateFactory : 接收兩個日期參數(shù),判斷請求日期是否在指定時間段內(nèi)
      spring:
        cloud:
          gateway:
            routes:
              - id: datetime_route
                uri: https://www.csdn.net
                predicates:
                  # - After=2021-08-30T23:59:59.789+08:00[Asia/Shanghai]
                  # - Before=2021-09-30T23:59:59.789+08:00[Asia/Shanghai]
                  - Between=2021-08-30T23:59:59.789+08:00[Asia/Shanghai], 2021-09-30T23:59:59.789+08:00[Asia/Shanghai]
      

      5、基于 Weight 權(quán)重的路由斷言

      WeightRoutePredicateFactory : 接收一個[組名, 權(quán)重],然后對同一個組內(nèi)的路由按照權(quán)重轉(zhuǎn)發(fā)

      spring:
        cloud:
          gateway:
            routes:
              - id: weight_route1
                uri: https://www.csdn.net
                predicates:
                  - Path=/blog/**
                  # blogGroup 是組名, 90 是權(quán)重
                  - Weight=blogGroup, 90
      
              - id: weight_route2
                uri: http://www.rzrgm.cn
                predicates:
                  - Path=/blog/**
                  # blogGroup 是組名, 10 是權(quán)重
                  - Weight=blogGroup, 10
      

      此斷言可用于實現(xiàn)灰度發(fā)布等功能。

      6、基于 Header 頭信息的路由斷言

      HeaderRoutePredicateFactory :接收兩個參數(shù),header名稱和一個正則表達(dá)式。 判斷請求頭信息中是否具有給定名稱且值與正則表達(dá)式匹配。

      spring:
        cloud:
          gateway:
            routes:
              - id: header_route
                uri: https://www.csdn.net
                predicates:
                  - Header=X-Request-Id, BLOG
      

      匹配請求頭中,參數(shù)名稱為 X-Request-Id, 且值為 BLOG 的請求。

      7、基于 Cookie 的路由斷言

      CookieRoutePredicateFactory :接收兩個參數(shù),cookie 名稱和一個正則表達(dá)式。 判斷請求 cookie 是否具有給定名稱且值與正則表達(dá)式匹配。

      spring:
        cloud:
          gateway:
            routes:
              - id: cookie_route
                uri: https://www.csdn.net
                predicates:
                  - Cookie=UserName, 123456
      

      8、基于 Host 的路由斷言

      HostRoutePredicateFactory :接收一個正則域名列表。判斷請求的 Host 是否滿足匹配規(guī)則。

      spring:
        cloud:
          gateway:
            routes:
              - id: host_route
                uri: https://www.csdn.net
                predicates:
                  - Host=**.order.baidu.com, **.goods.baidu.com
      

      9、基于 RemoteAddr 遠(yuǎn)程地址的路由斷言

      RemoteAddrRoutePredicateFactory :接收一個IP地址(格式為 ip/子網(wǎng)掩碼)列表,判斷請求主機(jī)地址是否在地址段中。

      spring:
        cloud:
          gateway:
            routes:
              - id: remoteAddr_route
                uri: https://www.csdn.net
                predicates:
                  - RemoteAddr=192.168.1.1/24, 192.168.0.100
      

      如上,192.168.1.1 是IP地址,24是子網(wǎng)掩碼,如果沒有寫子網(wǎng)掩碼,默認(rèn)為32(255.255.255.255)

      token認(rèn)證 和 URL鑒權(quán)

      白名單

      配置到白名單的 url,不需要進(jìn)行token認(rèn)證 和 URL鑒權(quán)。

      示例如下:

      jwt:
        # 無需進(jìn)行 token 校驗的請求路徑列表,請求支持通配符和RESTFUL規(guī)范
        # 示例:
        # 1、/admin/sys/login (可以匹配 /admin/sys/login 和 /admin/sys/login )
        # 2、/admin/sys/login/*(可以匹配 /admin/sys/login/ 、 /admin/sys/login/1 和 /admin/sys/login/1/)
        # 3、/admin/sys/login/**(可以匹配 /admin/sys/login/ 、 /admin/sys/login/1 、 /admin/sys/login/1/ 和 /admin/sys/login/1/1 等)
        # 4、/admin/sys/login/? (可以匹配 /admin/sys/login/1 和 /admin/sys/login/1/)
        # 5、/admin/sys/login::POST(只能匹配 POST 請求方式)
        # 6、/admin/sys/login/?::POST(匹配 POST 請求方式的 /admin/sys/login/1 和 /admin/sys/login/1/)
        # 7、......
        allowedList:
          - /login    
          - /limit/**
          - /demo/allow/*::POST # 如果需要限制請求類型,則在請求地址后邊添加 [::請求類型]
      

      token 認(rèn)證

      對不在白名單中的請求,會先進(jìn)行 token 校驗。token 在 header 中進(jìn)行傳輸,相關(guān)配置見 JwtTokenConfig。

      jwt:
        secret: xxxxxxxx #JWT加解密使用的密鑰
        expiration: 1800 #JWT的超期限時間(60 * 30),單位s
      

      token 續(xù)期

      當(dāng) token 校驗通過后,會嘗試重新生成 token,如果重新生成 token 成功,則會將新 token 保存到 response header 中。

      生成邏輯為:原 token 沒有過期,并且剩余有效時間小于總有效時間的一半時,會生成新 token。

      設(shè)置全局 header 信息

      網(wǎng)關(guān)層可以將下游微服務(wù)系統(tǒng)使用到的通用信息保存到 header 中,如下:

      // 將下游系統(tǒng)需要使用的屬性,設(shè)置到 header 中
      // 將下游系統(tǒng)需要使用的屬性,設(shè)置到 header 中
              ServerHttpRequest newRequest = exchange.getRequest().mutate()
                      .header(JwtTokenConfig.HEADER_TOKEN_KEY, "")
                      .header(GlobalHeaderConstant.USER_NAME_KEY, userName)
                      .header(Request.USER_HEADER, UserJsonUtils.serialize(jwtTokenUtil.getUserFromToken(token)))
                      .build();
                      log.info("轉(zhuǎn)發(fā)后的header信息[{}]",newRequest.getHeaders());
      

      如需設(shè)置多個信息,可以使用 exchange.getRequest().mutate().headers() 進(jìn)行保存設(shè)置

      限流功能

      # 限流示例
      - id: limit_route
        uri: http://localhost:8080
        predicates:
          - Path=/limit/test
        filters:
          - StripPrefix=1
          - name: RequestRateLimiter
            args:
              # 使用SpEL按名稱引用bean
              key-resolver: "#{@ipKeyResolver}"
              # 令牌桶填充平均速率 (每秒最大訪問次數(shù))
              redis-rate-limiter.replenishRate: 1
              # 令牌桶上限
              redis-rate-limiter.burstCapacity: 2
      

      RequestRateLimiter 是限流過濾器,該過濾器需要配置三個參數(shù):

      • burstCapacity,令牌桶總?cè)萘俊?/li>
      • replenishRate,令牌桶每秒填充平均速率。
      • key-resolver,用于限流的鍵的解析器的 Bean 對象的名字。它使用 SpEL 表達(dá)式根據(jù)#{@beanName}從 Spring 容器中獲取 Bean 對象。

      穩(wěn)定速率是通過在 replenishRate 和 burstCapacity 中設(shè)置相同的值來實現(xiàn)的。可通過設(shè)置 burstCapacity 高于 replenishRate 來允許臨時突發(fā)流量。

      路徑重寫

      StripPrefix 去掉請求路徑的最前面 n個部分

      spring:
        cloud:
          gateway:
            routes:
            - id: nameRoot
              uri: http://localhost:8080
              predicates:
              - Path=/name/**
              filters:
              - StripPrefix=2
      

      請求 /name/blue/red 會轉(zhuǎn)發(fā)到 /red

      PrefixPath 在請求路徑前添加前綴

      spring:
        cloud:
          gateway:
            routes:
            - id: prefixpath_route
              uri: http://localhost:8080
              filters:
              - PrefixPath=/mypath
      

      訪問/test 的請求被發(fā)送到 http://localhost:8080/mypath/test

      RedirectTo 重定向,配置包含重定向的返回碼和地址

      spring:
        cloud:
          gateway:
            routes:
            - id: redirectTo_route
              uri: http://localhost:8080
              filters:
              - RedirectTo=302, http://localhost:8081
      

      RewritePath 改寫路徑

      spring:
        cloud:
          gateway:
            routes:
            - id: rewrite_filter
              uri: http://localhost:8080
              predicates:
              - Path=/test/**
              filters:
              - RewritePath=/where(?<segment>/?.*), /test(?<segment>/?.*)
      

      /where/... 改成 /test/...

      SetPath 設(shè)置請求路徑,與RewritePath類似

      spring:
        cloud:
          gateway:
            routes:
            - id: setpath_route
              uri: http://localhost:8080
              predicates:
              - Path=/red/{segment}
              filters:
              - SetPath=/{segment}
      

      如 /red/blue 的請求被轉(zhuǎn)發(fā)到 /blue

      SetRequestHeader 設(shè)置請求頭信息

      spring:  
        cloud:    
          gateway:      
            routes:      
              - id: setrequestheader_route        
                uri: http://localhost:8080        
                filters:        
                  - SetRequestHeader=X-Request-Red, Blue
      

      RemoveRequestHeader 去掉某個請求頭信息

      spring:  
        cloud:    
          gateway:      
            routes:      
              - id: removerequestheader_route        
                uri: http://localhost:8080        
                filters:        
                  - RemoveRequestHeader=X-Request-Foo
      

      去掉請求頭信息 X-Request-Foo

      RemoveRequestParameter 去掉某個請求參數(shù)信息

      spring:  
        cloud:    
          gateway:      
            routes:      
              - id: removerequestparameter_route        
                uri: http://localhost:8080        
                filters:        
                  - RemoveRequestParameter=userName
      

      Default-filters 對所有請求添加過濾器

      spring:
        cloud:
          gateway:
            default-filters:
            - PrefixPath=/test
      

      跨域配置

      # 跨域配置
      spring:
        cloud:
          gateway:
            globalcors:
              corsConfigurations:
                '[/**]':
                  allowedOriginPatterns: '*'
                  allowedMethods: '*'
                  allowedHeaders: '*'
                  allowCredentials: true
      
      posted @ 2024-03-05 09:53  品書讀茶  閱讀(218)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 女人高潮被爽到呻吟在线观看| 男人天堂亚洲天堂女人天堂| 日韩精品一区二区三区四| 成人午夜电影福利免费| 亚洲高清日韩专区精品| 国产蜜臀在线一区二区三区 | 免费午夜无码片在线观看影院| 亚洲国产成人无码影片在线播放| 国产精品熟女一区二区三区| 久久青青草原亚洲AV无码麻豆| 国产日韩av免费无码一区二区三区| 在线 欧美 中文 亚洲 精品| 久久精品A一国产成人免费网站| 久青草国产在视频在线观看 | 在线观看中文字幕码国产| 最新亚洲人成网站在线观看| 国产一区二区亚洲精品| 亚洲无av在线中文字幕| 丁香五月亚洲综合在线| 国产精一品亚洲二区在线播放| 国产精品中文字幕观看| 日日碰狠狠添天天爽| 九九热在线免费视频观看| 日韩精品国内国产一区二| 国产高清一区二区三区视频| 亚洲gv天堂无码男同在线观看| 国产一区精品在线免费看| 极品无码人妻巨屁股系列| 亚洲国产午夜精品福利| 亚洲全乱码精品一区二区| 综合色一色综合久久网| 亚洲欧美一区二区三区在线| 午夜成人精品福利网站在线观看| 91在线视频视频在线| 温州市| 性欧美乱熟妇xxxx白浆| 做暖暖视频在线看片免费| 丰满少妇被猛烈进出69影院| 武宣县| 亚洲精品色哟哟一区二区| 亚洲av永久无码精品水牛影视|