Comment puis-je faire des demandes de routage haproxy basées sur des sous-chaînes URL?

13

Un équilibreur de charge est configuré avec deux back-ends.

L'URI de la demande ressemblera à ceci:

http://example.com/answers/submit
http://example.com/tag-02/answers/submit

Comment puis-je configurer haproxy de manière à ce que la demande soit envoyée à l'un ou l'autre des deux backends, selon le format de l'URI de la demande? La seule différence entre les demandes réside /tag-02/dans l'URI de la demande.

Un fichier de configuration haproxy pour cela avec un peu d'explication serait très apprécié, car je suis nouveau sur haproxy.

Autocrate
la source

Réponses:

13

Vous souhaitez utiliser les ACL :

backend be1 # this is your default backend
  ...
backend be2 # this is for /tag-02 requests
  ...

frontend fe
  ...
  default_backend be1
  acl url_tag02 path_beg /tag-02
  use_backend be2 if url_tag02

La section 7 du guide de configuration HAProxy contient les détails sur les ACL, mais vous devez connaître l' use_backendincantation magique cachée dans la section 4 du guide pour savoir quoi faire avec les ACL.

natacado
la source
1
Bien que le style ACL déclaré soit généralement plus lisible et réutilisable, vous pouvez, si vous préférez, inclure la déclaration ACL dans la use_backenddirective elle-même, avec use_backend be2 if { path_beg /tag-02 }.
womble
0

Pour fournir un meilleur exemple de la réponse ci-dessus, voici un exemple de configuration.

frontend https-in
   bind *:443 ssl crt /etc/ssl/server.pem
   mode http
   redirect scheme https if !{ ssl_fc }

   acl uri_help path_beg /help
   use_backend help if uri_help

backend help
    balance     roundrobin
    server      help yourbackendserver.com check
Joel Nishanth Ponukumatla
la source