conditional-statements - 基于动态变量的 Haproxy 条件

标签 conditional-statements haproxy

如果变量的评估返回 true,我希望 haproxy 返回 30x 状态代码。我看到您可以在 haproxy 中构建条件,并评估 cookie 之类的东西:

use_backend i if !cookie_set

但在我的例子中,这个条件评估的变量来 self 环境中的源。我可以在 haproxy 访问它所需的任何方法中公开此变量,并且可以是一个简单的 bool 值(因此“如果 x 为真,则返回 302”)。有没有办法配置 haproxy 来支持这个?

最佳答案

我找到了解决这个问题的方法。有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 配置中更改它并使用 chef 重新启动进程,所以这一切都发生得非常快。

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

关于conditional-statements - 基于动态变量的 Haproxy 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24495007/

相关文章:

Excel(平均值,标准偏差,...) - 每 N 列都有值

java - 带有 tomcat 的 HAproxy - 连接不足

amazon-web-services - 如何通过 Haproxy 与 Neptune 连接?

HAproxy 域名到基于路径(url)路由的后端映射

node.js - Nginx + SSL + Rails + Juggernaut (Node.js) + Engineyard

load-balancing - 使用 HAProxy for Postgresql 9.4 的负载平衡

javascript - 动态创建 if 条件

python - 根据列表的条件在 DataFrame 中创建新列

Java - 为类方法编写一个条件,确保只能使用 HashMap 的某些项目。

conditional-statements - bigcommerce 模板中的 {{#if}} 语句中有多个条件