Wie kann ich Haproxy-Routenanforderungen basierend auf URL-Teilzeichenfolgen erstellen?

13

Ein Load Balancer wird mit zwei Backends eingerichtet.

Die Anforderungs-URI sieht folgendermaßen aus:

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

Wie kann ich haproxy so konfigurieren, dass die Anfrage an das eine oder andere der beiden Backends gesendet wird, abhängig vom Format der Anfrage-URI? Der einzige Unterschied zwischen den Anforderungen besteht /tag-02/in der Anforderungs-URI.

Eine Haproxy-Konfigurationsdatei mit ein bisschen Erklärung wäre sehr dankbar, da ich neu bei Haproxy bin.

Autodidakt
quelle

Antworten:

13

Sie möchten ACLs verwenden :

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

Abschnitt 7 des HAProxy-Konfigurationshandbuchs enthält die Details zu ACLs. Sie müssen jedoch die use_backendin Abschnitt 4 des Handbuchs verborgene magische Beschwörung kennen, um zu wissen, was mit den ACLs geschehen soll.

Natacado
quelle
1
Während der deklarierte ACL-Stil im Allgemeinen besser lesbar und wiederverwendbar ist, können Sie, wenn Sie möchten, die ACL-Deklaration in die use_backendDirektive selbst mit aufnehmen use_backend be2 if { path_beg /tag-02 }.
womble
0

Um ein besseres Beispiel für die obige Antwort zu geben, sehen Sie unten ein Konfigurationsbeispiel.

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
quelle