¿Cómo puedo hacer solicitudes de ruta de haproxy basadas en subcadenas de URL?

13

Se configura un equilibrador de carga con dos extremos posteriores.

El URI de solicitud tendrá el siguiente aspecto:

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

¿Cómo puedo configurar haproxy de tal manera que la solicitud se envíe a uno u otro de los dos back-end, dependiendo del formato del URI de la solicitud? La única diferencia entre las solicitudes está /tag-02/en el URI de la solicitud.

Un archivo de configuración de haproxy para esto con un poco de explicación sería muy apreciado, ya que soy nuevo en haproxy.

Autodidacta
fuente

Respuestas:

13

Desea usar 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 Sección 7 de la guía de configuración de HAProxy tiene los detalles sobre las ACL, pero debe conocer el use_backendencantamiento mágico oculto en la sección 4 de la guía para saber qué hacer con las ACL.

natacado
fuente
1
Si bien el estilo de ACL declarado es generalmente más legible y reutilizable, puede, si lo prefiere, incluir la declaración de ACL en la use_backendpropia directiva, con use_backend be2 if { path_beg /tag-02 }.
womble
0

Para proporcionar un mejor ejemplo a la respuesta anterior, a continuación se muestra un ejemplo de configuración.

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
fuente