Se todas as suas solicitações chegarem a este frontend, elas estarão em tal formato:
frontend main
bind *:80 # Use separate bind directives as they are supported by new HAProxy versions
use_backend %[path,fields(2,/)]
backend backend1
reqrep ^([^\ :]*)\ /backend1/(.*) \ /
server foo ...
backend backend2
reqrep ^([^\ :]*)\ /backend2/(.*) \ /
server bar ...
Se você tiver algumas solicitações que não estão nesse formato, adicione mais use_backend-s ou default_backend. Você também pode fazer com que a ferramenta de orquestração que gera a configuração gere um arquivo simples com todos os nomes de backend e você pode usá-lo para ainda mais lógica
acl existing_backends path -f all_backends.txt -m beg
Onde o all_backends.txt se parece:
/backend1/
/backend2/
...
Dependendo da versão exata do HAProxy que você está usando, isso pode ser um pouco otimizado (usando aspas, variáveis, etc.), mas desta forma deve funcionar com 1.5 +.