zuul使用簡說

gung123發表於2020-03-16

zuul路由的幾個配置引數
1.靜態路由
zuul:
routes:
myroute1:
path: /mypath/**
url: (注意這裡url要http://開頭)
2.靜態路由+ribbon負載均衡/故障切換
zuul:
routes:
myroutes1:
path: /mypath/**
serviceId: myserverId
myserverId:
ribbon:
listOfServers: localhost:8080, localhost:8081
ribbon:
eureka:
enabled: false
3.動態路由+ribbon負載均衡/故障切換
zuul:
routes:
myroutes1:
path: /mypath/**
serviceId: myserviceId
eureka:
client:
serviceUrl:
defaultZne:xxx
4.路由匹配的一些配置
stripPrefix=true,轉發會過濾掉字首。
path: /myusers/**,預設時轉發到服務的請求是/**,如果stripPrefix=false,轉發的請求是/myusers/**
zuul.prefix=/api 會對所有的path增加一個/api字首

ignoredPatterns: /**/admin/** 過濾掉匹配的url
route:
users: /myusers/** 會匹配所有/myusers/**的url,但由於ignoredPatterns, /myusers/**/admin/**的請求不會被轉發,而是直接由zuul裡的介面接收

匹配順序
path:/myusers/**
path:/** 如果是在application.yml中配置的,那麼會優先匹配/myusers/**
但如果是applicaiton.properties配置的,那麼可能導致/myusers/**被/**覆蓋
ignored-Services: '*' 對於自動發現的services,除了route中明確指定的,其他都會被忽略
5.請求頭過濾
route.sensitiveHeaders: Cookie,Set-Cookie,Authorization
預設就有這三個請求頭,意思是不向下游轉發請求這幾個頭
zuul.ignoredHeaders 是一個全域性設定,而route.sensitiveHeaders是區域性設定


zuul過濾器
標準的zuul過濾器有4中,分別對應一次路由轉發的幾個關鍵點;
pre: 在路由轉發之前起作用
routing: 在路由時其作用
post: 在把結果返回給瀏覽器時起作用
error: 在整個路由階段,出現異常時起作用

如果要分析前端傳來的引數,驗證前端身份等對前端引數的操作,顯然是用pre過濾器
如果是要對返回給前端的結果進行操作或者分析,顯然是用post過濾器

編寫自定義路由器

public class MyFilter extends ZuulFilter{
filterType() 重寫,返回這個過濾器的型別
filterOrder() 重寫,返回這個過濾器在過濾器鏈的順序
shouldFilter() true啟動
run() 具體邏輯
}
然後向Spring注入這個Bean就行了


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952307/viewspace-2680656/,如需轉載,請註明出處,否則將追究法律責任。

相關文章