Zuul 實現網關轉發的五種方式小結
上圖為一個微服務框架的簡單示例,當有一個HTTP請求發送到服務器的時候,其實是先經過瞭Nginx的,再經過瞭網關,這裡的網關就擔任瞭攔截過濾的作用,既然攔截和過濾瞭,肯定就涉及到瞭請求的轉發
轉發我大致例瞭以下五種轉發方式:
方式一:path+serviceId 方式
在spring_cloud的配置文件application.yml 文件中加入以下配置:
server: port: 8888 #服務端口 spring: application: name: app-zuul-gateway #指定服務名 eureka: client: service-url: defaultZone: http://127.0.0.1:8100/eureka/ #註冊到eureka中的地址 register-with-eureka: true fetch-registry: true instance: prefer-ip-address: true #將自己的ip地址註冊到Eureka服務中 ip-address: 127.0.0.1 #ip地址 zuul: # 方式一:path+serviceId routes: #定義服務轉發規則 abcs: #abcs這個名字任意取的 path: /order/** #配置請求URL的請求規則 serviceid: app-order #eureka中服務的id
跳轉示例 :
http://localhost:8888/order/order2/201810300001
http://localhost:8888/order就相當於指定瞭eureka中id為app-order的微服務,後面在接上他本身的參數,就可以正常使用瞭
方式二:指定服務id 方式
zuul: routes: #定義服務轉發規則 app-order: /order/**
跳轉示例 :
http://localhost:8888/order/order2/201810300001
和方法一一樣,http://localhost:8888/order就相當於指定瞭eureka中id為app-order的微服務,後面在接上他本身的參數,就可以正常使用瞭
方式三:同時配置path和url 方式
zuul: routes: #定義服務轉發規則 abcs: path: /order/** url: http://127.0.0.1:8091 #真正的微服務地址,path匹配的請求都轉發到這裡
跳轉示例 :
http://localhost:8888/order/order2/201810300001
上面的和方法一樣,http://localhost:8888/order就相當於指定瞭eureka中id為app-order的微服務,後面在接上他本身的參數,就可以正常使用瞭
方式四:路由前綴 方式
zuul: prefix: /order2 strip-prefix: false routes: app-order: /order/**
跳轉示例 :
http://localhost:8888/order2/app-order/201810300001
訪問Zuul的/order2/app-order/201810300001路徑,請求將會被轉發到app-order 的order2/201810300001
方式五:路由前綴2 方式
zuul: routes: app-order: path: /order2/** strip-prefix: false
跳轉示例 :
http://localhost:8888/order2/201810300001
訪問Zuul的/order2/201810300001路徑,請求將會被轉發到app-order 的order2/201810300001
今天的分享就到此結束啦,以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Zuul 如何屏蔽服務和指定路徑
- zuul轉發後服務取不到請求路徑的解決
- SpringCloud超詳細講解微服務網關Gateway
- SpringCloud超詳細講解微服務網關Zuul
- 深入剖析網關gateway原理