Zuul默認是反向代理全部註冊到eureka上的微服務。
路徑必須具備能夠指定爲ant樣式模式的路徑,所以/myusers/*僅匹配一個級別, 但/myusers/**是分層匹配的。java
zuul:
ignoredServices: '*'
routes:
microservice-provider-user: /myusers/**
複製代碼
zuul:
ignoredServices: microservice-provider-goods
routes:
microservice-provider-user: /myusers/**
複製代碼
zuul:
ignoredServices: microservice-provider-goods
routes:
aaaa:
path: /myusers-path/**
serviceId: microservice-provider-user
複製代碼
注: 示例意味着對/myusers的HTTP調用將轉發到microservice-provider-user服務。
正則表達式
示例意味着對/myusers-url/**的HTTP調用將經過請求microservice-provider-user服務的url地址請求microservice-provider-user服務api
zuul:
routes:
abc:
path: /myusers-url/**
url: http://192.168.85.1:7900/
複製代碼
zuul:
routes:
abc:
path: /myusers-url/**
# 這裏要用service-id而不是url
service-id: microservice-provider-user
# 禁用掉ribbon的eureka使用
ribbon:
eureka:
enabled: false
# 這邊是ribbon要請求的微服務的serviceId
microservice-provider-user:
ribbon:
listOfServers: http://localhost:7900,http://localhost:7901
複製代碼
經過修改ZuulApplication.java中的代碼,設置正則表達式,調用PatternServiceRouteMapper進行注入bash
@Bean
public PatternServiceRouteMapper serviceRouteMapper() {
return new PatternServiceRouteMapper("(?<name>^.+)-(?<version>v.+$)", "${version}/${name}");
}
複製代碼
==注意:== 此種方式要知足以下這種條件,microservice-provider-user服務的名字應該修改爲microservice-provider-user-v1app
zuul:
prefix: /user
# 剝掉前綴,默認是true
strip-prefix: false
複製代碼
zuul:
routes:
aaa:
path: /myusers/**
# 剝掉前綴,默認是true
strip-prefix: false
複製代碼
解釋: localhost:8010/microservice-provider-user/user/1
複製代碼
正常的訪問形式下,後臺請求路徑是:/user/1
複製代碼
因此,此處的path應該填寫:/userlocalhost:8010/user/microservice-provider-user/1
複製代碼
此時,後臺請求路徑未剝離前綴user,故請求路徑是:/user/1localhost:8010/user/microservice-provider-user/user/1
複製代碼
此時,僅僅是在訪問路徑中加了一個前綴localhost:8010
複製代碼
如今的homepage根據業務需求設置了classpath修改爲了:localhost:8010/api
複製代碼
那麼此時就須要對application.yml進行如上配置zuul:
routes:
users:
path: /myusers/**
legacy:
path: /**
複製代碼
==注:==
ide