希望有人能指出我正确的方向。
我正在尝试将 HAProxy 配置为使用环境变量(来自操作系统)作为 acl 语句的一部分。
因此,如果在启动或重新加载 HAProxy 时将环境变量设置为 true,则将授予访问权限。如果环境变量设置为 false 那么我只想生成 NOSVR 错误。
我知道如果我也加入一条规则说
use_backend ftp1-srv 除非 accessFtp 那么请求会通过 OK,这似乎表明 acl 部分不起作用。
我在搜索中发现很少显示如何以这种方式使用环境变量,只是您应该能够使用 env(name) 从内部状态进行示例获取
这是我到目前为止所尝试过的:
frontend ftp-in
bind *:2200
mode tcp
option tcplog
log /dev/log local1 debug
acl accessFtp env(accessFTP) eq true
use_backend ftp1-srv if accessFtp
backend ftp1-srv
balance source
option tcplog
server ftp1 127.0.0.1:21
acl accessFtp env(accessFTP) eq true
这可能行不通,因为eq
是整数相等比较运算符,env()
返回一个字符串并且true
是...好吧,我不知道怎么办true
将在与字符串的整数比较中输入,但无论哪种方式,结果都不会是您所期望的。
如果环境变量包含文字字符串,则使用显式字符串比较true
.
acl accessFtp env(accessFTP) -m str true
或者,如果您只想测试环境变量是否已设置为任何值,则应该能够使用“找到值”匹配测试。如果根本没有设置该值,则该值应该为 false。
acl accessFtp env(accessFTP) -m found
您还可以通过删除命名 acl 并将其替换为匿名 acl 来整理您的配置。
use_backend ftp1-srv if accessFtp if { env(accessFTP) -m str true }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)