Route haproxy et réécriture basée sur le chemin de l'URI

J'essaye de configurer un Haproxy pour équilibrer la charge des requêtes sur quelques serveurs identifiés par le chemin de l'uri. Par exemple:

https://www.example.com/v1/catalog/foo/bar

Devrait conduire à la "catalogue-v1" backends.

Chose est chaque application répond sur un chemin différent donc je ne dois pas seulement d'identifier l'application mais réécrire le chemin de l'URL. E. g.

À

Je sais que je ne devrais pas utiliser Haproxy pour la réécriture, mais pour l'instant c'est inévitable.

Essayé les regex qui a travaillé sur regex101:

([a-z.]*)\/([a-z0-9\-\.]*)\/([a-z\-]*)\/(.*)

De Substitution:

/-/

Et enfin voici le haproxy.config:

global
    daemon
    user root
    group root
    maxconn 256000
    log     127.0.0.1 local0
    log     127.0.0.1 local1 notice
    stats   socket /run/haproxy/stats.sock mode 777 level admin
defaults
    log      global
    option   dontlognull
    maxconn  4000
    retries  3
    timeout  connect 5s
    timeout  client  1m
    timeout  server  1m
    option   redispatch
    balance  roundrobin

listen stats :8088
    mode http
    stats enable
    stats uri /haproxy
    stats refresh 5s

backend catalog-v1
    mode http
    option httpchk GET /catalog-v1/ping
    http-check expect status 200
    reqrep ([a-z.]*)\/([a-z0-9\-\.]*)\/([a-z\-]*)\/(.*)   /-/
    server 127.0.0.1:8280_catalog-v1-node01 127.0.0.1:8280 check inter 2s rise 3 fall 2

backend checkout-v1
    mode http
    option httpchk GET /checkout-v1/ping
    http-check expect status 200
    reqrep ([a-z.]*)\/([a-z0-9\-\.]*)\/([a-z\-]*)\/(.*)   /-/
    server 127.0.0.1:8180_checkout-v1-node01 127.0.0.1:8180 check inter 2s rise 3 fall 2

frontend shared-frontend
    mode http
    bind localhost:80
    acl is-catalog-v1-path path_dir /v1/catalog
    acl is-checkout-v1-path path_dir /v1/checkout
    use_backend catalog-v1 if is-catalog-v1-path
    use_backend checkout-v1 if is-checkout-v1-path

Suis-je raté quelque chose?

J'ai eu du mal avec cela fait déjà quelques temps sans succès. Les backends montre le "HAUT" dans Haproxy page de statistiques, mais chaque fois que j'appelle le "non réecrit url" 400 Bad Request error.

Merci d'avance pour votre aide!

source d'informationauteur leovrf