Netflix Zuul 路由排除

Netflix Zuul 是一个 API 网关,它可以对微服务架构中的请求进行路由、过滤等操作。路由排除是指在 Zuul 的路由配置中,指定某些请求不经过正常的路由规则,可能是直接跳过某些微服务路由,或者不进行某些预定义的过滤操作。

配置路由排除的方式

基于路径的排除

在 Zuul 的配置文件(通常是 application.yml 或 application.properties)中,可以使用 zuul.ignored-patterns 属性来指定要排除的路径模式。例如,在 application.yml 中存在如下配置:

# 路由规则
zuul:
  # URL 地址排除,排除所有包含 /order/ 的路径
  ignored-patterns: /**/order/**
  # 路由配置
  routes:
    #...

示例:基于前面 zuul 简单用法。

# 基于路径的排除
zuul:
  # URL 地址排除,排除所有包含 /order/ 的路径
  ignored-patterns: /**/order/**
  # 路由配置
  routes:
    # 路由名称,必须唯一
    service-order:
      # 匹配服务路径前缀
      path: /api/order/**
      # 指定实际服务名,服务名在 eureka 中注册
      service-id: service-order
    service-product:
      path: /api/product/**
      service-id: service-product

此时,重启 zuul 网关,访问 http://localhost:9000/api/order/order/1 地址,返回 404 错误,如下图:

677b493e29364c3fd55bb5bf601c7f6e_1733237309130-82824f14-a3c7-4892-a810-dfa252e80a52.png

注意,如果你需要排除多个路径,如排除任何包含 /order/ 和 /product/ 的路径,配置如下:

zuul:
  # URL 地址排除,排除所有包含 /order/ 和 /product/ 的路径
  ignored-patterns:
    - /**/order/**
    - /**/product/**
  # 路由配置
  routes:
    # 路由名称,必须唯一
    service-order:
      # 匹配服务路径前缀
      path: /api/order/**
      # 指定实际服务名,服务名在 eureka 中注册
      service-id: service-order
    service-product:
      path: /api/product/**
      service-id: service-product

基于服务名排除

如果要排除对某个特定服务的路由,可以使用 zuul.ignored-services 属性。假设我们有一个名为 service-order 的微服务,想要排除对它的路由,在 application.yml 中可以这样配置:

zuul:
  # 基于服务名排除,多个服务名使用逗号分隔
  # 注意,* 表示排除所有服务
  ignored-services: service-order
  # 路由配置
  routes:
    service-product:
      path: /api/product/**
      service-id: service-product

注释掉 ignored-services 配置,访问 http://localhost:9000/service-order/order/1 地址效果如下图:

245651127fd0e97856d24301a85ec619_1733238073375-e2f11302-bd63-4826-a4bc-52d82260d268.png

放开 ignored-services 配置的注释,访问效果如下图:

3416546919790c76f7916fe2a499830c_1733238210241-1ddc948a-014c-4c6a-879b-3db26bac6886.png

到这里,Zuul 中如何排除路由就介绍完了,下节将介绍路由前缀。

点击下载/查看本教程相关资料或者源代码。
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号