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.

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.