Traefik Priority

Traefik Priority

I just needed a "new" feature of Traefik. It is not actually a new feature of Traefik just new to me.

The issue

I needed to add a second domain name to one of my sites so that Let's Encrypt would generate a certificate for that domain, so I modified the router rule.

traefik.http.routers.myservice1.rule=Host('') || Host('')

The issue was that as soon as Traefik picked up this rule another site/service stopped working. The rule for this service was:

traefik.http.routers.myservice2.rule=Host( && PathPrefix(`/myfolder)

By default traefik prioritizes router rules by the length of the rule. Longer rules take precedence over shorter rules. When I updated the first router rule, this made the rule longer than the second router rule and the first rule took precedence.

Calls to would match the first rule and the service hosted at would not work.

The Fix

Traefik has a feature which lets you set the priority of a rule. So I added:

traefik.http.routers.myservice1.priority: 100

to my docker-compose.yml file. This lowered the priority of the longer rule so that calls to myservice2 would match first.