haproxy + lua, как мы можем выбрать один из 2 бэкэндов на основе значения параметра запроса - PullRequest
0 голосов
/ 18 октября 2019

У меня есть API со следующей конечной точкой и параметрами запроса:

/myService/myrequest?param1=value1
/myService/myrequest?param1=value2

Моя проблема в том, что если значение param1 равно 'value1', то бэкэнд должен быть выбран как 'backend1', но если значение param1 равно'value2', бэкэнд должен быть выбран как 'backend2'. Я пытаюсь использовать Lua для этой цели.

мои вопросы: 1. Можно ли это сделать без Lua и только с использованием haproxy? 2. если с Lua, как мы можем это сделать?

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Вы можете использовать HAProxy ACL напрямую, чтобы получить то, что вы хотите, а именно, используя urlp :

frontend myfrontend

# your bind statement and other options
...

acl param1_eq_value1 urlp(param1) value1
acl param1_eq_value2 urlp(param1) value2

use_backend backend1 if param1_eq_value1
use_backend backend2 if param1_eq_value2
default_backend <your_default_backend>
0 голосов
/ 18 октября 2019

Вы можете сделать это в чистом nginx, в основном что-то вроде:

if ($arg_param1 = 'value1') {
  proxy_pass    'localhost:1000';
}
if ($arg_param1 = 'value2') {
  proxy_pass    'localhost:2000';
}

Здесь я предполагаю, что вы просто хотите установить апстрим.

...