Configuration
HAProxy:use_backend 被忽略,因為後端沒有前端功能
我有一個正在以程式方式建構的 HAProxy 配置文件,對於定義的每個後端,我都收到如下錯誤:
[WARNING] 073/153725 (1663) : parsing [/etc/haproxy/haproxy.cfg:964] : 'use_backend' ignored because backend 'bk_10716' has no frontend capability.
我的配置文件相當簡單,而且只有一個後端的簡化版本似乎可以工作,所以我無法確定哪裡出了問題。
我的配置文件包含以下內容:
global tune.ssl.default-dh-param 2048 log 127.0.0.1 local1 debug chroot /var/lib/haproxy user haproxy group haproxy maxconn 4000 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 listen stats bind *:1234 stats auth admin:bdi2016 stats uri / stats realm Haproxy\ Statistics stats enable mode http frontend http: bind *:80 mode http option httpclose option forwardfor
其次是其中的大量:
use_backend bk_10011 if { hdr_end(host) -i somedomainname.com } backend bk_10011 server server_10011 127.0.0.1:10011 check
我只是錯過了一些明顯/愚蠢的東西嗎?
這只是一個愚蠢的錯誤。我需要
use_backend if
在前端而不是在每個單獨的後端之上指定我的所有語句。這就是為什麼它只與一個後端一起工作的原因,因為無論縮進如何,第一個use_backend
“屬於”的frontend http:
並且每個後續後端都顯得孤立。
您需要為前端分配一個 ID 號(例如 ID 1)。然後,您需要將所述 ID 分配給後端配置以進行匹配。
所以前端應該是這樣的:
frontend http: id 1 bind *:80 mode http option httpclose option forwardfor
在後端像這樣:
use_backend bk_10011 if { hdr_end(host) -i somedomainname.com } backend bk_10011 server server_10011 127.0.0.1:10011 id 1 check
至少這對我有用。