Temo que não seja possível processar use_backend
antes das declarações redirect
. Acredito que o HAPROXY avalie os redirecionamentos após receber toda a solicitação HTTP do cliente e escolher um back-end somente depois de descobrir que o cliente não será redirecionado.
Você não precisa modificar todas as regras de redirecionamento para adicionar outros caminhos de exclusão. Você pode usar uma ACL exclusiva. Por exemplo, esse snippet de configuração funcionaria:
acl noredirects path -m reg ^/.well-known/acme-challenge/
acl noredirects path -m beg /static/ /images/ /css/
acl noredirects req.hdr(host) -i httpsite.example.com
redirect prefix https://a.test if ! noredirects { req.hdr(host) -m reg ^a\.test(?::.*)?$ }
use_backend certbot_80 if noredirects
Você também pode processar redirecionamentos em um back-end. Por exemplo:
frontend http *:80
acl certbot path -m beg /.well-known/acme-challenge/
acl httpsite path -m beg /public/
use_backend certbot_80 if certbot
use_backend httpbackend if httpsite
default_backend redirector
backend redirector
redirect prefix https://a.test if { req.hdr(host) -m reg ^a\.test(?::.*)?$ }
redirect prefix https://b.test if { req.hdr(host) -m reg ^b\.test(?::.*)?$ }
backend httpbackend
server httpserver httpserver.example.com:80