【问题标题】:How to exclude or ignore special paths or routes from zuul routing如何从zuul路由中排除或忽略特殊路径或路由
【发布时间】:2016-09-07 03:35:16
【问题描述】:

是否可以从 Zuul 路由中排除路径或匹配器?

目标是

  • /contracts/** 的所有请求都被路由到 contract.example.com
  • /audit/** 的所有请求都被路由到 audit.example.com
  • /heartbeat/**/sso/** 的所有请求都直接从 zuul 提供。
  • 所有其他请求 (/**) 都被路由到 html.example.com

我有这样的配置:

zuul:
    routes:
        contract:
            path: /contracts/**
            url: http://contracts.example.com:8080/api
        audit:
            path: /audits/**
            url: http://audit.example.com:8080
        html:
            path: /**
            url: http://html.example.com:80

现在的问题是如何定义 /heartbeat/sso 不是由 zuul 路由到 html.example.com 的?

我正在使用 Spring Boot 及其 AutoConfiguration。

【问题讨论】:

    标签: spring spring-boot netflix-zuul


    【解决方案1】:

    有一个名为 ignored-patterns 的配置属性。有了这个,就可以定义匹配器来从路由中排除路由。

    zuul:
        ignoredPatterns:
            - /heartbeat/**
            - /sso/**
        routes:
            contract:
                path: /contracts/**
                url: http://contracts.example.com:8080/api
            audit:
                path: /audits/**
                url: http://audit.example.com:8080
            html:
                path: /**
                url: http://html.example.com:80
    

    【讨论】:

    • 显然是ignoredPatterns,而不是ignored-patterns
    • Zuul 不接受以序列形式列出的 ignorePatterns 值。它的值应该用逗号分隔,例如 ignorePatterns: value1, value2, value3 ,因为它是作为 LinkedHashSet 实现的
    • @Shafiul 是正确的,截至Brixton.SR6 发布时仍然如此:ignoredPatterns: /foo/**,/bar/**
    【解决方案2】:

    Brixton.SR6 开始,ignorePattern 属性应该在application.yml 文件中定义不同。它应该定义如下:

    zuul:
    ignoredPatterns: /heartbeat/**, /sso/**
    routes:
        contract:
            path: /contracts/**
            url: http://contracts.example.com:8080/api
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-25
      • 2021-12-22
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 2017-06-12
      相关资源
      最近更新 更多