Gateway匹配規則

重要概念

路由 route
斷言 predicate
過濾器 fliter

一、時間匹配

在 after 時間之後的所有請求轉發到 URI中的地址

gateway:
discovery:
locator:
enabled: true #啟動服務中心註冊與發現,通過服務id訪問服務
lower-case-service-id: true
routes:
- id: time_route
uri: https://www.baidu.com
predicates:
- After=2018-01-20T06:06:06+08:00[Asia/Shanghai]

在 before 時間之前的所有請求轉發到 URI中的地址

gateway:
discovery:
locator:
enabled: true #啟動服務中心註冊與發現,通過服務id訪問服務
lower-case-service-id: true
routes:
- id: time_route
uri: https://www.baidu.com
predicates:
- After=2018-01-20T06:06:06+08:00[Asia/Shanghai]

Between 在這個時間段可以訪問

- Between=2018-01-20T06:06:06+08:00[Asia/Shanghai], 2019-01-20T06:06:06+08:00[Asia/Shanghai]

二、通過 Cookie 匹配

gateway:
discovery:
locator:
enabled: true #啟動服務中心註冊與發現,通過服務id訪問服務
lower-case-service-id: true
routes:
- id: cookie_route
uri: https://www.baidu.com
predicates:
- Cookie=know, abc

三、通過 Header 匹配

gateway:
discovery:
locator:
enabled: true #啟動服務中心註冊與發現,通過服務id訪問服務
lower-case-service-id: true
routes:
- id: cookie_route
uri: https://www.baidu.com
predicates:
- Header=X-Request-Id, \d+

四、通過 Host 匹配

gateway:
discovery:
locator:
enabled: true #啟動服務中心註冊與發現,通過服務id訪問服務
lower-case-service-id: true
routes:
- id: cookie_route
uri: https://www.baidu.com
predicates:
- Host=**.baidu.com

五、通過 Method 匹配

gateway:
discovery:
locator:
enabled: true #啟動服務中心註冊與發現,通過服務id訪問服務
lower-case-service-id: true
routes:
- id: cookie_route
uri: https://www.baidu.com
predicates:
- Method=GET

六、通過 Path 匹配

請求中包含 smile 屬性的引數即可匹配路由。

gateway:
discovery:
locator:
enabled: true #啟動服務中心註冊與發現,通過服務id訪問服務
lower-case-service-id: true
routes:
- id: cookie_route
uri: https://www.baidu.com
predicates:
- Path=/test/{1}

七、通過 引數 匹配

請求中包含 keep 屬性並且引數值是以 pu 開頭的長度為三位的字串才會進行匹配和路由

gateway:
discovery:
locator:
enabled: true #啟動服務中心註冊與發現,通過服務id訪問服務
lower-case-service-id: true
routes:
- id: cookie_route
uri: https://www.baidu.com
predicates:
- Query=keep, selp.

八、通過 ip 地址

gateway:
discovery:
locator:
enabled: true #啟動服務中心註冊與發現,通過服務id訪問服務
lower-case-service-id: true
routes:
- id: cookie_route
uri: https://www.baidu.com
predicates:
- RemoteAddr=192.168.1.1/24

一個請求滿足多個路由的謂詞條件時,請求只會被首個成功匹配的路由轉發