zuul路由的幾個(gè)配置參數(shù)
1.靜態(tài)路由
zuul:
routes:
myroute1:
path: /mypath/**
url: http://localhost:8080 (注意這里url要http://開頭)
2.靜態(tài)路由+ribbon負(fù)載均衡/故障切換
zuul:
routes:
myroutes1:
path: /mypath/**
serviceId: myserverId
myserverId:
ribbon:
listOfServers: localhost:8080, localhost:8081
ribbon:
eureka:
enabled: false
3.動(dòng)態(tài)路由+ribbon負(fù)載均衡/故障切換
zuul:
routes:
myroutes1:
path: /mypath/**
serviceId: myserviceId
eureka:
client:
serviceUrl:
defaultZne:xxx
4.路由匹配的一些配置
stripPrefix=true别瞭,轉(zhuǎn)發(fā)會(huì)過(guò)濾掉前綴。
path: /myusers/**蝙寨,默認(rèn)時(shí)轉(zhuǎn)發(fā)到服務(wù)的請(qǐng)求是/**,如果stripPrefix=false嗤瞎,轉(zhuǎn)發(fā)的請(qǐng)求是/myusers/**
zuul.prefix=/api 會(huì)對(duì)所有的path增加一個(gè)/api前綴
ignoredPatterns: /**/admin/** 過(guò)濾掉匹配的url
route:
users: /myusers/** 會(huì)匹配所有/myusers/**的url,但由于ignoredPatterns, /myusers/**/admin/**的請(qǐng)求不會(huì)被轉(zhuǎn)發(fā)贝奇,而是直接由zuul里的接口接收
匹配順序
path:/myusers/**
path:/** 如果是在application.yml中配置的,那么會(huì)優(yōu)先匹配/myusers/**
但如果是applicaiton.properties配置的弃秆,那么可能導(dǎo)致/myusers/**被/**覆蓋
ignored-Services: ‘*‘ 對(duì)于自動(dòng)發(fā)現(xiàn)的services,除了route中明確指定的,其他都會(huì)被忽略
5.請(qǐng)求頭過(guò)濾
route.sensitiveHeaders: Cookie,Set-Cookie,Authorization
默認(rèn)就有這三個(gè)請(qǐng)求頭菠赚,意思是不向下游轉(zhuǎn)發(fā)請(qǐng)求這幾個(gè)頭
zuul.ignoredHeaders 是一個(gè)全局設(shè)置,而route.sensitiveHeaders是局部設(shè)置
zuul過(guò)濾器
標(biāo)準(zhǔn)的zuul過(guò)濾器有4中衡查,分別對(duì)應(yīng)一次路由轉(zhuǎn)發(fā)的幾個(gè)關(guān)鍵點(diǎn);
pre: 在路由轉(zhuǎn)發(fā)之前起作用
routing: 在路由時(shí)其作用
post: 在把結(jié)果返回給瀏覽器時(shí)起作用
error: 在整個(gè)路由階段,出現(xiàn)異常時(shí)起作用
如果要分析前端傳來(lái)的參數(shù)拌牲,驗(yàn)證前端身份等對(duì)前端參數(shù)的操作,顯然是用pre過(guò)濾器
如果是要對(duì)返回給前端的結(jié)果進(jìn)行操作或者分析塌忽,顯然是用post過(guò)濾器
編寫自定義路由器
public class MyFilter extends ZuulFilter{
filterType()重寫,返回這個(gè)過(guò)濾器的類型
filterOrder()重寫土居,返回這個(gè)過(guò)濾器在過(guò)濾器鏈的順序
shouldFilter() true啟動(dòng)
run()具體邏輯
}