草庐IT

springcloud的zuul路由配置详解

lixiaobai_boke 2023-05-18 原文

zuul的路由配置非常灵活,简单,有以下几种方式

最近在集成springcloud的项目,代码和文档会定期更新,项目的github地址

zuul的yml如果不配置路由,那么访问zuul网关的默认方式:http://zuulHostIp:port/要访问的微服务名称/服务中的url。其他路由规则如下:

1、自定义指定微服务的访问路径

自定义指定微服务的访问路径;配置zuul.routes.指定的微服务的serviceId = 指定的路径即可,如下:

# 配置路由规则 (方式1:自定义指定微服务的访问路径;配置zuul.routes.指定的微服务的serviceId = 指定的路径即可,如下)
zuul:
  routes:
    consumer-server: /consumer/**  #消费者的服务名及路径
    provider-server: /provider/**  #提供者的服务名及路径

postman访问:

192.168.0.102:8040/consumer/consumer/getServiceName

解释说明:consumer 是zuul里面映射的前缀,/consumer/getServiceName 是我的代码里面的路径

2、忽略指定的微服务

忽略服务非常简单,可以使用zuul.ignored-services配置需要忽略的服务,多个服务用逗号隔开

zuul:
  ignored-services: consumer-server,provider-server

3、忽略所有的微服务,只路由指定的微服务

很多场景下,可能只想要让zuul代理指定的微服务,此时可以将zuul.ignored-services 设为 ’ * ’

zuul:
  ignored-services: '*'
  routes:
    consumer-server: /consumer/**

4、同时指定微服务的serviceId和对应的路径

zuul:
  routes:
    consumer-server-route:  #该配置方式中,consumer-server-route只是给路由一个名字,可以任意取名
      service-id: consumer-server
      path: /consumer/**

5、同时指定path和url

zuul:
  routes:
    consumer-server-route:  #该配置方式中,consumer-server-route只是给路由一个名字,可以任意取名
      url: http://localhost:8085/ #指定consumer服务的地址
      path: /consumer/**

需要注意的是,使用这种方式配置的路由不会作为HystrixCommand执行,同时也不能使用Ribbon来负载多个url。下面的配置可以解决这个问题(后续会说到这个问题)

6、同时指定path和url,并且不会破坏zuul的Hystrix,Ribbon的特性

zuul:
  routes:
    consumer-server-route:  #该配置方式中,consumer-server-route只是给路由一个名字,可以任意取名
      service-id: consumer-server #指定consumer服务的地址
      path: /consumer/**
ribbon:
  eureka:
    enabled: false #为Ribbon禁用Eureka
consumer-server:
  ribbon:
    listOfServers: localhost:8000,localhost:8001

7、路由前缀

zuul:
  prefix: api
  strip-prefix: false
  routes:
    consumer-server: /consumer/**  #消费者的服务名及路径

8、忽略某些路径

有时需要更细粒度的路由控制,例如,想让Zuul代理某个微服务,同时又想保护该微服务的某些敏感路径。此时,可使用ignored-Patterns,指定忽略的正则。例如:

zuul:
  ignoredPatterns: /**/admin/** #忽略所有包含/admin/的路径
  routes:
    consumer-server: /consumer/**  #消费者的服务名及路径

9、本地转发

zuul:
  routes:
    route-name:
      path: /path-a/**
      url: forward:/path-b

当访问zuul的/path-a/** 路径,将转发到zuul的/path-b/** 路径

有关springcloud的zuul路由配置详解的更多相关文章

  1. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  2. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  3. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  4. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

  5. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  6. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  7. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

  8. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  9. ruby-on-rails - Rails - 从命名路由中提取 HTTP 动词 - 2

    Rails中有没有一种方法可以提取与路由关联的HTTP动词?例如,给定这样的路线:将“users”匹配到:“users#show”,通过:[:get,:post]我能实现这样的目标吗?users_path.respond_to?(:get)(显然#respond_to不是正确的方法)我最接近的是通过执行以下操作,但它似乎并不令人满意。Rails.application.routes.routes.named_routes["users"].constraints[:request_method]#=>/^GET$/对于上下文,我有一个设置cookie然后执行redirect_to:ba

  10. ruby-on-rails - 如何在 Rails 中设置路由的默认格式? - 2

    路由有如下代码:resources:orders,only:[:create],defaults:{format:'json'}resources:users,only:[:create,:update],defaults:{format:'json'}resources:delivery_types,only:[:index],defaults:{format:'json'}resources:time_corrections,only:[:index],defaults:{format:'json'}是否可以使用1个字符串为所有资源设置默认格式,每行不带“默认值”散列?谢谢。

随机推荐