SpringCloud:路由ZUUL的配置詳解


 

 

以下是兩種配置文件的配置方式,可以根據需要選取對自己項目有利的配置。

自定義訪問路徑(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

 

文章轉載至:https://my.oschina.net/eacdy/blog/3006505


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM