以下是兩種配置文件的配置方式,可以根據需要選取對自己項目有利的配置。
自定義訪問路徑(path)
配置application.yml文件
#provider-user:是你的微服務模塊的名稱,及spring.application.name名稱
zuul:
routes:
provider-user: /user/**
配置application.properties文件
zuul.routes.provider-user.path=/user/**
這樣設置,provider-user微服務的訪問路徑就會被映射到/user/**路徑,例如正常訪問provider-user模塊:localhost:8002/getUser 配置后需要訪問zuul服務(假設我的zuul服務端口為8004,實際看自己的zuul服務端口):localhost:8004/user/getUser
忽略指定微服務
配置application.yml文件
#多個微服務名稱用,分隔開
zuul:
ignored-services: provider-user,consumer-movie
配置application.properties文件
zuul.ignored-services=provider-user,consumer-movie
這樣就可讓Zuul忽略provider-user和consumer-movie微服務,只代理其他微服務
忽略所有服務,只要指定服務
配置application.yml文件
# 使用'*'可忽略所有微服務
zuul:
ignored-services: '*'
routes:
provider-user: /user/**
配置application.propertion文件
zuul.ignored-services=*
zuul.routes.provider-user=/user/**
讓Zuul路由可以訪問provider-user微服務。
同時指定serviceId和訪問路徑(path)
配置application.yml文件
# 該配置方式中,provider-user只是給路由一個名稱,可以任意起名。
zuul:
routes:
provider-user:
service-id: provider-user
path: /user/** # service-id對應的路徑
配置application.properties文件
zuul.routes.provider-user.serviceId=provider-user
zuul.routes.provider-user.path=/user/**
與自定義訪問路徑一樣效用,微服務就會被映射到/user/**路徑。
同時指定url和訪問路徑(path)
配置application.yml文件
# 該配置方式中,provider-user只是給路由一個名稱,可以任意起名。
zuul:
routes:
provider-user:
url: http://localhost:8002/ # 指定的url
path: /user/** # service-id對應的路徑
配置application.properties文件
zuul.routes.provider-user.url=http://localhost:8002
zuul.routes.provider-user.path=/user/**
將/user/**
映射到http://localhost:8000/**路徑
使用這種方式配置的路由不會作為HystrixCommand執行,同時也不能使用Ribbon來負載均衡多個URL(下面的配置解決問題)
同時指定url和訪問路徑(path),不破壞Zuul的Hystrix、Ribbon特性
配置application.yml文件
#在E版之后新增了負載均衡的配置。
#配置中provider-user只是一個路由名稱,可自定義名稱
zuul:
routes:
provider-user:
path: /user/**
service-id: provider-user
ribbon:
eureka:
enabled: false #禁止Ribbon使用Eureka
provider-user:
ribbon:
listOfServers: localhost:8000,localhost:8001
配置application.properties文件
#配置中provider-user只是路由名稱,可自定義
zuul.routes.provider-user.path=/user/**
zuul.routes.provider-user.serviceId=provider-user
ribbon.eureka.enabled=false
provider-user.ribbon.listOfServers=localhost:8002,localhost:8003
既指定path與URL,又不破壞Zuul的Hystrix與Ribbon特性,解決了上面的問題。
忽略一定范圍的路徑
配置application.yml文件
zuul:
ignoredPatterns: /**/admin/** # 忽略所有包含/admin/的路徑
routes:
provider-user: /user/**
配置application.properties文件
zuul.ignored-patterns=/**/admin/**
zuul.routes.provider-user:/user/**
將microservice-provider-user微服務映射到/user/**路徑,但會忽略該微服務中所有包含/admin/的路徑.
路由前綴
配合prefix使用。
配置application.yml文件
zuul:
prefix: /api
strip-prefix: false
routes:
provider-user: /user/**
#prefix全局配置前綴 api
#strip-prefix:false 表示保留前綴訪問(默認為true)
#示例如下
#strip-prefix:true : localhost:8004/api/user/getUser 自動轉到路徑 localhost:8002/user/getUser
#strip-prefix:false : localhost:8004/api/user/getUser 自動轉到路徑 localhost:8002/user/api/getUser
配置application.properties文件
zuul.prefix=/api
zuul.routes.provider-user.strip-prefix=false
zuul.routes.provider-user=/user/**
prefix全局配置前綴 api strip-prefix:false 表示保留前綴訪問(默認為true) 示例如下 strip-prefix:true : localhost:8004/api/user/getUser 自動轉到路徑 localhost:8002/user/getUser strip-prefix:false : localhost:8004/api/user/getUser 自動轉到路徑 localhost:8002/user/api/getUser
小技巧
如無法掌握Zuul路由的規律,可將com.netflix包的日志級別設為DEBUG。這樣,Zuul就會打印轉發的具體細節,從而幫助我們更好地理解Zuul的路由配置
配置application.yml文件
logging:
level:
com.netflix: DEBUG
配置application.properties文件
logging.level.com.netflix=DEBUG