基于动态变量的Haproxy条件

时间:2014-06-30 16:43:54

标签: conditional-statements haproxy

如果对变量的评估返回true,我想让haproxy返回30x状态代码。我看到你可以在haproxy中构造条件,并评估像cookies这样的东西:

  

use_backend i if !cookie_set

但在我的情况下,此条件为eval的变量来自我的环境中的源。我可以在haproxy访问它所需的任何方法中公开这个变量,并且可以是一个简单的布尔值(如果x为真,那么返回302')。有没有办法配置haproxy来支持这个?

1 个答案:

答案 0 :(得分:2)

我发现了解决这个问题的方法。有conditionals for ACLs名为'always_true'和'always_false',顾名思义,这将导致他们使用的ACL始终返回true或false。所以我在我的配置中设置了这样:

acl do_redir always_true

然后我在我的配置中使用此ACL构建重定向stmt:

redirect code 307 prefix http://someurl if do_redir

然后,ACL do_redir是我切换haproxy重定向行为的机制。我正在改变haproxy配置中的这个并使用厨师重新启动过程,所以这一切都很快发生。

修改此ACL的另一种方法是使用haproxy套接字我尚未开始工作。这似乎比我当前的方法有优势,因为它不需要重新启动并且可能会丢失连接,或者修复haproxy配置文件的复杂性和增加的风险。