Як я можу зробити запити на маршрути haproxy на основі підрядів URL?


14

Балансир навантаження встановлюється з двома задніми кінцями.

URI запиту матиме вигляд наступного:

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

Як я можу налаштувати haproxy таким чином, що запит надсилається на той чи інший із двох зворотних кінців, залежно від формату URI запиту? Єдина відмінність запитів полягає /tag-02/в URI запиту.

Конфігураційний файл haproxy для цього з невеликим поясненням буде дуже вдячний, оскільки я новачок у haproxy.

Відповіді:


13

Ви хочете використовувати 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

У розділі 7 посібника з конфігурації HAProxy є деталі щодо ACL, але ви повинні знати магічний use_backendзаклик, прихований у розділі 4 керівництва, щоб знати, що робити з ACL.


1
Хоча задекларований стиль ACL, як правило, більш читабельний і багаторазовий, ви можете, якщо хочете, включити декларацію ACL в саму use_backendдирективу, за допомогою use_backend be2 if { path_beg /tag-02 }.
жіноча

0

Щоб надати кращий приклад відповіді вище, нижче наведено приклад конфігурації.

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.