zuul 裏面的 prefix 和 strip-prefix 怎麼使用

首先兩個是配置路由前綴的,

下面是我網上找的一段話:

 

 

基本上看上面這些也明白了,

那我們項目中是怎麼用的呢?這裏我們有兩種方式:

第一種:

我們有一個內部的微服務系統,本身沒有申請域名,又因爲是容器部署(每次啓動ip都會變),

因此不能ip加端口訪問,剛好我們部門有一個項目,所以最後決定就用這個項目做轉發了。

首先我們這個aaa項目配置中:

server.servlet.context-path = /api-aaa


zuul.routes.purchase.path = /bbb/**
zuul.routes.purchase.stripPrefix = false
zuul.routes.purchase.serviceId = bbb項目的服務名

因爲配置了項目前綴,因此,請求aaa項目,地址要加 api-aaa

可能有的人沒有看懂,再說明下,這裏我是想請求bbb項目,在aaa項目做了一層網關。

 

而且,這裏還設置了 stripPrefix = false

也就是說,請求過去的地址,不去除 前綴(bbb/**)

那我最後的請求地址就是:

http://api-aaa/bbb/getList.....

爲什麼是這個地址呢?

因爲是false,不去除前綴,所以要帶bbb,

而且,我們bbb的項目是配置了地址的,

請求的url,必須要有bbb。

server.servlet.context-path = /bbb

所以最後的請求就是那樣了。

 

如果還是沒太明白,我們還有一個場景,

和上面不同的是,這次是true,並且,不是走一個項目,而是專門的網關。

 

網關那邊的配置:

zuul.routes.bbb.path = /order-gateway/bbb-service/**
zuul.routes.bbb.serviceId = com-bbb-service

說明:

網關這邊沒有配置strip-prefix,也就是說是默認值true,那麼請求會自動去除這裏加的前綴

也就是會去除/order-gateway/bbb-service/

 

最後的請求地址是,http://網關的域名/order-gateway/bbb-service/bbb/getList....

沒問題的:

因爲strip-prefix是true(默認)

去除前綴之後,其實最後請求到bbb系統的地址就是:

之前:http://網關的域名/order-gateway/bbb-service/bbb/getList....

去除之後:http://網關的域名/bbb/getList....

          剛好就轉發到我麼bbb項目了。

 

終於搞懂了zuul prefix 和 strip-prefix 區別

Prefix 公共前綴

strip-prefix 不想要前綴,就配置false

想要,就不配,默認就是true

 

strip-prefix 既可以配全局,也可以給每個要轉發的項目配。

 

如果還有不明白的可以留言,這個我也是新學習,咱們可以多多交流下

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章