Haproxy
在 haproxy use_backend 中使用多個條件
沒有括號,似乎不可能有 haproxy select use_backend 基於
true and (a or b)
例如,我想
use_backend ClusterA if allowed_src and (method_a or path_b)
. 無論我是否在 before/after 反轉條件and
,我都可以使用單個 true 值而不是要求其中一個或一個來allowed_src
訪問method_a
後端path_b
。*更新範例,使所有三個 ACL 都是不同的。
Vadim 寫的答案達到了您最初提出的要求。為了匹配您更新的問題,您可以使用以下邏輯:
acl allowedsrc src 123.123.123.123 acl mypath path_beg /path_a use_backend ClusterA if allowedsrc mypath || allowedsrc METH_POST
由於您沒有提及您嘗試與allowedsrc ACL 匹配的內容,我假設您想要匹配某個 IP 地址。
讓我把整個邏輯分解成簡單的英語。
acl allowedsrc 匹配源 IP 123.123.123.123
acl mypath 匹配以**/path_a開頭的 URL**
最後一行表示如果源 IP 地址為 123.123.123.123且URL 以 /path_a 開頭或****源IP 地址為 123.123.123.123 且 HTTP 方法為 POST ,則請求將指向ClusterA後端。
除了 METH_POST,您可以使用不同的預定義 ACL。查看HAProxy 的文件以查看完整列表。