使用 req.cook 时 HAProxy 配置文件错误

使用 req.cook 时 HAProxy 配置文件错误

我正在跟进本教程(或多或少)尝试使用 haproxy 进行快速简便的 A/B 测试设置,但由于某些我无法识别的原因,haproxy 不喜欢我的配置文件。

配置文件:

global  
log    127.0.0.1 local1 debug
chroot /var/lib/haproxy
user   haproxy
group  haproxy
daemon

defaults  
log     global
mode    http
option  httplog
option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

frontend http
bind *:80

acl is_current-area_cookie req.cook(Current-Area) -m found
acl is_new-area_cookie     req.cook(New-Area) -m found
## Other ACL's

use_backend current_area   if is_current-area_cookie
use_backend new_area       if is_new-area_cookie

use_backend weighted_area  if !is_current-area_cookie !is_new-area_cookie
## Other Backend handling

backend current_area
    server current_area 127.0.0.1:81

backend new_area
    server new_area     127.0.0.1:82

backend weighted_area
    server current_area 127.0.0.1:81 weight 70
    server new_area     127.0.0.1:82 weight 30

错误如下:

[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:27] : error detected while parsing ACL 'is_current-area_cookie'.
[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:28] : error detected while parsing ACL 'is_new-area_cookie'.
[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:31] : error detected while parsing switching rule.
[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:32] : error detected while parsing switching rule.
[ALERT] 063/165427 (31203) : parsing [/etc/haproxy/haproxy.cfg:34] : error detected while parsing switching rule.
[ALERT] 063/165427 (31203) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg
[ALERT] 063/165427 (31203) : Fatal errors found in configuration.

我已经阅读了 HAProxy 的所有文档,尤其是有关的内容req.cook(),没有发现我的语法有任何错误......

答案1

事实证明,Ubuntu 的 repos 包含一个相当旧的(1.4)版本的 HAProxy,并且这个示例使用了在 1.5 中添加的一些指令。

升级到最新稳定版本(1.6)后,此配置有效。

相关内容