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
一個請求滿足多個路由的謂詞條件時,請求只會被首個成功匹配的路由轉發