我们有 2 台 IIS 服务器,上面有多个网站。我想检查每个网站是否仍在运行。如果我进行简单的端口检查,即使 20 个网站中有 19 个已关闭,IIS 也会回复。所以这对我没什么帮助。
我有这个 curl,它可以做我想做的事情,但我不知道如何将它放在 HAProxy 中,甚至不知道是否可行。
curl --connect-to 'website':443:'internalserverip':443 'https://website' -k
curl 命令不需要 ''
我现在正在使用 tcp 检查,但这还不够。
global
log /dev/log local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend 10_20_1_129_443
bind 10.20.1.129:443
option tcplog
option logasap
mode tcp
default_backend 10_20_1_129_nodes_443
backend 10_20_1_129_nodes_443
mode tcp
balance roundrobin
option log-health-checks
server web01 10.20.1.50:443 check
server web02 10.20.1.128:443 check
frontend 10_20_1_129_80
bind 10.20.1.129:80
option tcplog
option logasap
mode tcp
default_backend 10_20_1_129_nodes_80
backend 10_20_1_129_nodes_80
mode tcp
balance roundrobin
option log-health-checks
server web01 10.20.1.50:80 check
server web02 10.20.1.128:80 check
答案1
同事能够查明问题所在。上述问题的解决方法是,我从未使用证书解密标头 http 流量。安装证书后,我能够读取标头:
defaults
log global
mode tcp
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend 10_20_1_129_443
bind *:443 ssl crt /etc/haproxy/wildcard.pem
option tcplog
option logasap
mode http
option http-server-close
use_backend backend_site 1 if { hdr_beg(host) -i site 1 }
use_backend backend_site 2 if { hdr_beg(host) -i site 2 }
default_backend 10_20_1_129_nodes_443
backend backend_site 2
mode http
balance roundrobin
option log-health-checks
server web01 10.20.1.50:443 check ssl verify none
server web02 10.20.1.128:443 check ssl verify none
backend backend_site 1
mode http
balance roundrobin
option log-health-checks
option httpchk HEAD / HTTP/1.1\r\nHost:\ site 1
server web01 10.20.1.50:443 check ssl verify none
server web02 10.20.1.128:443 check ssl verify none
backend 10_20_1_129_nodes_443
mode http
balance roundrobin
option log-health-checks
server web01 10.20.1.50:443 check ssl verify none
server web02 10.20.1.128:443 check ssl verify none