我有这个 HAProxy 配置,如您所见,我在backend
s 中有很多重复的东西。有没有办法摆脱重复,例如stats
?
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
daemon
maxconn 2000
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
acl url_a path_reg ^\/a$|\/a\/
use_backend webservers_a if url_a
acl url_b path_reg ^\/b$|\/b\/
use_backend webservers_b if url_b
default_backend webservers_main
backend webservers_main
mode http
stats enable
stats auth admin:admin
stats uri /haproxy?stats
balance roundrobin
option httpchk
option forwardfor
option http-server-close
server web1 192.168.50.21:80 maxconn 32 check
backend webservers_a
mode http
stats enable
stats auth admin:admin
stats uri /haproxy?stats
balance roundrobin
option httpchk
option forwardfor
option http-server-close
server web2 192.168.50.22:80 maxconn 32 check
backend webservers_b
mode http
stats enable
stats auth admin:admin
stats uri /haproxy?stats
balance roundrobin
option httpchk
option forwardfor
option http-server-close
server web3 192.168.50.23:80 maxconn 32 check
您可以在配置中添加如下内容:
我假设以下几点:
你不想把你的暴露
stats
给公众。如果不是这种情况,只需将您的统计数据移动到您现有的frontend
指令中。替换
${PRIVATE_IP}
为您机器上可用的私有 IP(或为此设置一个),以及${PORT}
未使用的端口,例如8080
.警告:如果您使用与 stats 指令不同的端口
80
,则必须stats
通过在url
. 为了防止和规避:frontend
将您的to${PUBLIC_IP}:80
和您的listen stats
部分绑定到${PRIVATE_IP}:80
.