a、單例serverid對映
zuul:routes:
client-a:
path: /client/**
serviceid: client-a
意思是,以/client/**為端點路徑的服務都對映到client-a,這種配置還可以簡寫成下面的格式,二者效果完全一致:
zuul:routes:
client-a: /client/**
還有一種更粗暴的方式,就是對映的serverid都不用寫,如下:
zuul:routes:
client-a:
這種配置,zuul會為client-a新增乙個預設的對映規則,即:/client/**,相當於上面的第一種配置方式。
b、單例url對映
zuul:routes:
client-a:
path: /client/**
url: http://localhost:7070 #client-a的位址
c、多例項路由
預設情況下zuul會使用eureka中整合的負載均衡功能,如果要使用ribbon的負載均衡,就需要指定serverid,這個操作一定要禁用掉ribbon使用eureka,具體操作如下:
zuul:routes:
ribbon-route:
path: /ribbon/**
serviceid:ribbon-routeribbon:
eureka:
enabled: false#禁止ribbon使用eurekaribbon-route:ribbon:
niwsserverlistclassname: com.netflix.loadbalancer.configurationbasedserverlist #定義獲取服務列表方法
nfloadbalancerruleclassname: com.netflix.loadbalancer.randomrule #ribbon lb strategy 使用隨機負載策略
listofservers: localhost:7070,localhost:7071 #client services for ribbon lb 指定服務位址
d、forword本地跳轉
假如在閘道器服務中,需要做一些邏輯處理,可以在配置url時,新增forword選項:
zuul:routes:
client-a:
path: /client/**
e、相同路徑載入
zuul:
routes:client-b:path: /client/**serviceid: client-bclient-a:
path: /client/**serviceid: client-a
從上面的配置檔案,可以看出,配置了兩個工程的路由,即:client-a工程,client-b工程,但是二者的path路徑是一致的,這種情況下,在載入訪問的時候,後者會覆蓋前者。
f、路由萬用字元
規則說明
示例/**
匹配任意數量的路徑與字元
/client/add, /client/update, client/a, client/add/a, client/update/a/b
/*匹配任意數的字元
/client/add, /client/update, client/a
/?匹配單個字元
/client/a
a、遮蔽服務、遮蔽路徑
zuul:ignored-services: client-b #忽略的服務,防止服務侵入ignored-patterns: /**/div/** #忽略的介面,遮蔽介面routes:
client-a: /client/**
加上ignored-services 與ignored-patterns之後,zuul在拉取服務列表的時候,建立對映規則的時候,就會忽略掉client-b服務和/**/div/**介面。
b、過濾掉敏感請求頭
正常我們使用http請求服務,在header新增值進行傳遞,是很正常的一件事,協議的一些基本認證也都在header,比如cookie,或者把登入認證通過後的使用者資訊base64編碼後,放在authorization裡面,在系統內這種傳遞是沒有問題的,但是如果系統與外部進行互動,這種可能就會出現異常,畢竟也要防患於未然,這時可以在zuul裡邊指定敏感頭資訊,切斷它與下游的互動,如下:
zuul:routes:
client-a:
path: /client/**sensitiveheaders: cookie,set-cookie,authorizationserviceid: client-a
c、重定向
zuul:add-host-header: true #重定向header問題
routes:
client-a: /client/**
d、重試機制
在生產環境中,可能由於各種原因,導致偶然請求失敗,可以使用zuul結合ribbon做重試操作,如下:
zuul:retryable: true #開啟重試
ribbon:
maxautoretries: 1 #同乙個服務重試的次數(除去首次)
maxautoretriesnextserver: 1 #切換相同服務數量
但是,這個功能要慎用,因為有些介面需要保證冪等性。
zuul閘道器配置
靜態路由 通過url匹配對映位址進行靜態路由 只會把到達zuul閘道器的請求按照傳送,並把匹配請求位址 common service http localhost 9001 zuul routes traditional url 傳統的路由配置,此名稱可以自定義 path common servic...
服務閘道器zuul之四 zuul閘道器配置
禁用過濾器 在zuul中特別提供了乙個引數來禁用指定的過濾器,該引數的配置格式如下 zuul.accessfilter.pre.disable true 動態載入 動態路由 通過結合spring cloud config的動態重新整理機制,可以是實現動態重新整理路由規則的功能。動態過濾器 對於實現請...
Zuul 閘道器 令牌驗證配置
建立子專案 eureka client zuul 配置檔案,在此之前,服務消費者需要將介面暴露在註冊中心,以便閘道器 請求。還有需要設定zuul和hystrix的超時時間,否則服務降級處理將出現zuul超時錯誤。zuul路由規則參考文件 server port 9000 服務埠 spring nam...