haproxy + lua,如何根据查询参数值在2个后端之间进行选择

时间:2019-10-18 08:14:02

标签: lua haproxy

我有一个具有以下端点和查询参数的api:

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

我的问题是,如果param1的值为'value1',则应将后端选择为'backend1',但如果param1的值为'value2',则应将后端选择为'backend2'。我正试图将Lua用于此目的。

我的问题是: 1.是否可以不使用Lua而仅使用haproxy来完成? 2.如果使用Lua,我们该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以直接使用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>

答案 1 :(得分:0)

您可以在纯nginx中完成此操作,基本上就像这样:

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

这里我假设您只是想设置上游。