Constraints on port publishing via the ingress routing mesh?

I’m struggling with publishing ports via the ingress routing mesh:
It seems you can publish to all nodes of the mesh or none, rather than specifying some constraints in a similar way as you can do for services.

I’m aware there is mode: host but in most cases I’d like to publish to a different node than where the service is running. So bypassing the mesh isn’t really an option, unless I start deploying my own proxies etc.

Is it planned to add (node) constraints to publishing ports? I’m thinking of stuff like node.role==worker, node.hostname==zeus, etc.

As a workaround, is it possible to exclude an entire node from the ingress routing mesh, but still have it in the swarm for all other intents and purposes?

I don’t think you can use constraints on the ingress, it’s either all or local only.

We run multiple Traefik reverse proxies and use this config to bypass ingress. Now every instance is listening on their local external ports.

version: '3'

services:
  traefik:
    image: traefik:v2.11
    hostname: '{{.Node.Hostname}}'
    ports:
      # listen on host ports without ingress network
      - target: 80
        published: 80
        protocol: tcp
        mode: host
      - target: 443
        published: 443
        protocol: tcp
        mode: host
    deploy:
      mode: global