我有一个具有以下端点和查询参数的api:
/myService/myrequest?param1=value1
/myService/myrequest?param1=value2
我的问题是,如果param1的值为'value1',则应将后端选择为'backend1',但如果param1的值为'value2',则应将后端选择为'backend2'。我正试图将Lua用于此目的。
我的问题是: 1.是否可以不使用Lua而仅使用haproxy来完成? 2.如果使用Lua,我们该怎么做?
答案 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';
}
这里我假设您只是想设置上游。