Jak mogę wysyłać żądania trasy haproxy na podstawie podciągów URL?

14

Moduł równoważenia obciążenia jest skonfigurowany z dwoma tylnymi końcami.

Identyfikator URI żądania będzie wyglądał następująco:

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

Jak skonfigurować haproxy w taki sposób, że żądanie jest wysyłane do jednego lub drugiego z dwóch zaplecza, w zależności od formatu identyfikatora URI żądania? Jedyną różnicą między żądaniami jest /tag-02/identyfikator URI żądania.

Byłby bardzo mile widziany plik konfiguracyjny haproxy z tym trochę wyjaśnienia, ponieważ jestem nowy w haproxy.

Samouk
źródło

Odpowiedzi:

13

Chcesz korzystać z list 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

Rozdział 7 przewodnika konfiguracji HAProxy zawiera szczegółowe informacje na temat list ACL, ale musisz znać magiczną use_backendinkantację ukrytą w części 4 przewodnika, aby wiedzieć, co zrobić z listami ACL.

natacado
źródło
1
Chociaż zadeklarowany styl listy ACL jest ogólnie bardziej czytelny i wielokrotnego użytku, możesz, jeśli wolisz, dołączyć deklarację ACL do use_backendsamej dyrektywy, za pomocą use_backend be2 if { path_beg /tag-02 }.
womble
0

Aby podać lepszy przykład powyższej odpowiedzi, poniżej znajduje się przykład konfiguracji.

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
źródło