Configuration
使用 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()
並且找不到我的語法有任何問題的東西……
結果發現 Ubuntu 的 repos 包含一個相當舊的(1.4)版本的 HAProxy,這個例子使用了一些在 1.5 中添加的指令。
升級到最新的穩定版本 (1.6) 後,此配置有效。