了解gateway的配置才可以理解使用gateway可以做什麼事情,才能更好地應用在產品開發中。
predicates主要起的作用是:配置路由匹配請求的規則
http 相關
path
配置對於請求路徑的匹配規則
yml配置,多個引數用逗號隔開
- path = /aa/**,/bb/**
json配置
}
cookie
配置對cookie中值的匹配,第乙個為key,第二個為value。下例匹配cookie設定chocolate:ch.p的請求
yml配置
- cookie = chocolate,ch.p
json配置
}
header
匹配http請求中設定的內容,http-header設定x-request-id:\d+可以匹配,第二個引數第二個引數是正規表示式
yml配置
- header = x-request-id,\d+
json配置
}
host
匹配http請求host,匹配所有host為**.somehost.com的請求
yml配置
- host = **.somehost.com
json配置
}
method
匹配http請求頭
yml配置
- method = get
json配置
}
query
匹配http請求中的查詢引數,請求中攜帶param1=value的請求可以匹配
yml配置
- query = param1,value
json配置
}
remoteaddr
匹配請求中的remoteaddr
yml配置
- remoteaddr = 192.168.1.1/24
json配置
}
remoteaddr
匹配請求中的remoteaddr
yml配置
- remoteaddr = 192.168.1.1/24
json配置
}
時間 相關
after
設定時間之後可以訪問
yml配置
- after = 2017-01-20t17:42:47.789-07:00[america/denver]
json配置
}
before
設定時間之前可以訪問
yml配置
- before = 2017-01-20t17:42:47.789-07:00[america/denver]
json配置
}
權重相關
權重相關
至少兩組以上路由可以配置權重路由,配置後會根據權重隨機訪問幾個路由
yml配置
- weight = service1,80
json配置
}
路徑重寫
yml配置
- rewritepath = /path/(?.*), /$\
json配置
"}}
修改請求頭
yml配置
- addrequestheader = x-request-foo,bar
json配置
}
修改請求引數
yml配置
- addrequestparameter = foo,bar
json配置
}
修改響應引數
yml配置
- addresponseheader = x-request-foo,bar
json配置
}
路徑字首增強
請求路徑/hello, 將會被替換為 /mypath/hello
yml配置
- prefixpath = /mypath
json配置
}
路徑字首刪除
請求/name/bar/foo,去除掉前面兩個字首之後,最後**到目標服務的路徑為/foo
yml配置
- stripprefix = 2
json配置
}
重定向
yml配置
- preservehostheader
json配置
}
重定向
yml配置
- redirectto = 302,
json配置
}
斷路器
yml配置
- name: hystrix
args:
# 斷路後跳轉位址
name: fallbackcmd
fallbackuri: forward:/incaseoffailureusethis
json配置
}
整合redis原生支援請求限流
yml配置
- name: requestratelimiter
args:
redis-rate-limiter.replenishrate: 10
redis-rate-limiter.burstcapacity: 20
json配置
}
刪除請求頭屬性
yml配置
- removerequestheader = x-request-foo
json配置
}
刪除響應頭屬性
yml配置
- removeresponseheader = x-request-foo
json配置
}
重寫響應頭
將請求 /42?user=ford&password=omg!what&flag=true, 改為 /42?user=ford&password=***&flag=true
yml配置
- rewriteresponseheader = x-response-foo,password=[^&]+,password=***
json配置
}
重設請求路徑
請求/foo/bar,在接下來的處理中被改為/bar
yml配置
- setpath =/
json配置
"}}
設定響應頭
在接下來的處理中修改響應頭x-response-foo為bar
yml配置
- setresponseheader =x-request-foo,bar
json配置
}
設定http狀態
yml配置
- name: setstatus
args:
status: 401
json配置
}
設定檔案傳輸大小
yml配置
- name: requestsize
args:
maxsize: 5000000
json配置
}
失敗重試
yml配置
- name: retry
args:
retries: 3
statuses: bad_gateway
json配置
}
springcloud GateWay配置動態路由
之前學習gateway進行請求的 uri是固定的,也就是在單機的情況下。不過實際開發中,服務很多時候是集群,因此uri就不能寫固定的ip了。而動態路由的方式能夠實現對集群的負載均衡 下面動態路由實現步驟 1.依賴。由於註冊中心使用的是eureka,gateway需要註冊到eureka並且要獲取eur...
springcloud gateway解決跨域問題
方式一 if request method options if request method post if request method get 方式二 未加if判斷 add header access control allow origin add header access control...
spring cloud Gateway簡單使用
2年前有幸使用過一次spring cloud 1.5.9 1.整合的是zuul做閘道器,沒有使用gateway做閘道器,一直是個小遺憾。終於在2年後的19年底再次使用spring cloud,這次果斷使用spring cloud 全家桶。閘道器就是原生的spring cloud gateway 專案...