How to exclude or ignore special paths or routes from zuul routing

d0x picture d0x · May 11, 2016 · Viewed 12.1k times · Source

Is it possible to exclude paths or matchers from the Zuul routing?

The goal is that

  • All requests to /contracts/** are routed to contract.example.com
  • All requests to /audit/** are routed to audit.example.com
  • All requests to /heartbeat/** or /sso/** are served from zuul directly.
  • All other requests (/**) are routed to html.example.com

I have configuration like this:

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

Now the question is how to define that /heartbeat and /sso isn't routed to html.example.com by zuul?

I'm using Spring Boot and its AutoConfiguration.

Answer

d0x picture d0x · May 11, 2016

There is a configuration property called ignored-patterns. With this it is possible to define matchers to exclude routes from routing.

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