Come posso effettuare richieste di route haproxy basate su sottostringhe URL?


13

Un bilanciamento del carico è impostato con due back-end.

L'URI della richiesta sarà simile al seguente:

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

Come posso configurare haproxy in modo tale che la richiesta venga inviata all'uno o all'altro dei due back-end, a seconda del formato dell'URI della richiesta? L'unica differenza tra le richieste è /tag-02/nell'URI della richiesta.

Un file di configurazione haproxy per questo con un po 'di spiegazione sarebbe molto apprezzato, dato che sono nuovo di haproxy.

Risposte:


13

Vuoi usare 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 sezione 7 della guida alla configurazione di HAProxy contiene i dettagli sugli ACL, ma devi conoscere l' use_backendincantesimo magico nascosto nella sezione 4 della guida per sapere cosa fare degli ACL.


1
Mentre lo stile ACL dichiarato è generalmente più leggibile e riutilizzabile, puoi, se preferisci, includere la dichiarazione ACL nella use_backenddirettiva stessa, con use_backend be2 if { path_beg /tag-02 }.
Womble

0

Per fornire un esempio migliore alla risposta sopra, di seguito è riportato un esempio di configurazione.

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.