Change backend request hostname different with frontend

Hi, all. I have a question about Host header modify, here is my scenes:
I use traefik with docker in my lab.
I have a container run sniproxy service with domain a.example.com (backend: https://a.example.com)
and I want to use b.example.com(frontend: b.example.com ,reverse proxy of a.example.com) in traefik frontend router.
here is my labels with sniproxy service:

      traefik.enable: "true"
      traefik.http.middlewares.imgv2auth.headers.customrequestheaders.Host: "a.example.com"
     #traefik.http.middlewares.imgv2auth.headers.sslRedirect: "true"
     #traefik.http.middlewares.imgv2auth.headers.sslForceHost: "true"
      #traefik.http.middlewares.imgv2auth.headers.sslHost: "a.example.com"
      traefik.http.routers.imgv2443.middlewares: "imgv2auth@docker"
      traefik.http.routers.imgv2443.entrypoints: "websecure"
      traefik.http.routers.imgv2443.rule: "Host(`b.example.com`)"
      traefik.http.routers.imgv2443.service: "imgv2443"
      #traefik.http.services.imgv2443.loadbalancer.passHostHeader: "false"
      traefik.http.services.imgv2443.loadbalancer.server.port: 443
      traefik.http.services.imgv2443.loadbalancer.server.scheme: "https"
      traefik.http.routers.imgv2443.tls: "true"
      traefik.http.routers.imgv2443.tls.certresolver: "le"
      traefik.http.routers.imgv2443.tls.domains[0].main: "b.example.com"

whatever I enable or disable the following, it always report "did not include a hostname" in sniproxy service and return 502 error.

     traefik.http.middlewares.imgv2auth.headers.customrequestheaders.Host: "a.example.com"
     traefik.http.services.imgv2443.loadbalancer.passHostHeader: "false"
      

anyone know how to set corrently?