OK, I figured it out. It’s really dumb…
[providers]
[providers.consulCatalog]
prefix = "traefik"
exposedByDefault = true
connectAware = true
connectByDefault = true
defaultRule = "Host(`{{ normalize .Name }}.service.consul`)"
servicename = "traefik-http" # <-- this needs to match with how the service is registered inside consul!
#watch = true
servicename inside your consul catalog definition MUST MATCH with how the service is registered in Consul.
E.g. mine is registered as traefik-http. So, I need to configure servicename = "traefik-http".
Now, when setting default-deny, but allowing traefik-http, I’m able to browse!

