當前位置:編程學習大全網 - 編程語言 - SpringCloud Gateway配置

SpringCloud Gateway配置

客戶端發送請求到gateway,由gateway handler mapping進行路由,發送到gateway web handler。這個handler處理請求相關的filter鏈。filter分“pre”和“post”兩種處理邏輯。

配置predicates和filters有兩種方式:簡寫和全參數展開。

公式:name=name,regexp,例如

如果yaml文件標準壹樣進行配置,通常會有name和args兩個鍵,args是壹個map的鍵值對組配置predicate或者filter。如下:

每種路由的判斷依據都是根據Http請求的不同屬性。

**

value為正則表達式

value為正則表達式

每個Host為Ant-style格式,以.號分割。

參數包括壹個Spring PathMatcherpatterns和壹個可選的matchOptionalTrailingSeparator分隔符

上面的規則可以匹配諸如/red/1/red/blue/blue/green等路徑。

抽取URI中的模板變量(如segment),作為鍵值對存儲在ServerWebExchange.getAttributes(),key為ServerWebExchangeUtils.URI_TEMPLATE_VARIABLES_ATTRIBUTE。這些值可以被GatewayFilter factories獲取到。有個工具方法可以更簡單地獲取到這些值。如下

value為正則表達式

格式為CIDR-notation,例如192.168.0.1/16,192.168.0.1是ip,16是子網掩碼。

配置兩個參數:group和weight(數值)。

上面的配置會讓 80%的請求發送到weighthigh.org, 20%的請求發送到weightlow.org。

增加請求頭參數,可以使用URI變量

增加查詢參數,可以使用URI變量

增加響應頭中參數,可以使用URI變量

去掉重復的響應頭參數

上面會去掉重復的Access-Control-Allow-Credentials,Access-Control-Allow-Origin參數值。

可以設置strategy值修改默認刪除策略,默認為RETAIN_FIRST,即保留第壹個。其他有RETAIN_LAST,RETAIN_UNIQUE。

輕量的斷路由

可以替換頭部的參數的名稱,如將Blue:abc替換為X-Request-Red:abc

增加前綴,例如/hello將被發送到/mypath/hello

The RequestRateLimiter GatewayFilter Factory

通過實現RateLimiter接口配置限流規則,可通過keyResolver參數設置具體的限流的key。現在默認的是PrincipalNameKeyResolver,調用的是 ServerWebExchange 中的 Principal.getName()。

如果key解析後為空,請求會被拒絕,可以通過配置下面參數進行自定義策略

spring.cloud.gateway.filter.request-rate-limiter.deny-empty-key ( true or false ) spring.cloud.gateway.filter.request-rate-limiter.empty-key-status-code

redis限流,使用的是令牌桶算法。

redis-rate-limiter.replenishRate 每秒多少個請求,也是令牌入桶的頻率。

redis-rate-limiter.burstCapacity 峰值請求。

redis-rate-limiter.requestedTokens 每個請求消耗的令牌數,默認1.

如果想保持穩定的請求頻率,可以設置 replenishRate 和 burstCapacity 為相同值,如果有突發的大量請求,則需要設置 burstCapacity 比 replenishRate 大。

如果想設置每分鐘1個請求,可以通過以下配置實現

replenishRate=1

requestedTokens=60

burstCapacity=60

也可以實現自己的 RateLimiter 和 KeyResolver

配置參數 status and url

刪除指定的請求頭參數

刪除指定響應頭參數

刪除請求參數

重寫路徑

上面配置會把/red/blue變為/blue

/red/blue會變為/blue

替換請求頭參數值

替換響應頭參數值

設置狀態碼

上面兩種配置都會設置為401

刪除前綴

上面的配置將使/name/blue/red變為nameservice/red。

參考

https://cloud.spring.io/spring-cloud-gateway/reference/html/#the-path-route-predicate-factory

  • 上一篇:怎樣記憶電腦鍵盤上的26個字母的順序
  • 下一篇:創青春的2014年獲獎名單
  • copyright 2024編程學習大全網