如果对变量的评估返回true,我想让haproxy返回30x状态代码。我看到你可以在haproxy中构造条件,并评估像cookies这样的东西:
use_backend i if !cookie_set
但在我的情况下,此条件为eval的变量来自我的环境中的源。我可以在haproxy访问它所需的任何方法中公开这个变量,并且可以是一个简单的布尔值(如果x为真,那么返回302')。有没有办法配置haproxy来支持这个?
答案 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配置文件的复杂性和增加的风险。