我已经与 Haproxy 搏斗了几个小时,但我可能以我有限的知识错过了一些东西。
我有两台服务器(ha1.domain.com 和 ha2.domain.com),均配有 keepalived 和 haproxy,用于管理其他两台服务器(mail1.domain.com 和 mail2.domain.com)之间的故障转移。有一个 VIP(域 mailserver.domain.com)。
当我通过浏览器连接到公共域时,出现错误,无法验证证书,因为域 (mailserver.domain.com) 与证书中的域 (mail1.domain.com 或 mail2.domain.com) 不匹配。避免此问题的最佳策略是什么?
我的 haproxy 配置:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 debug
maxconn 45000 # Total Max Connections.
daemon
nbproc 1 # Number of processing cores.
defaults
timeout server 86400000
timeout connect 86400000
timeout client 86400000
timeout queue 1000s
# [HTTP Site Configuration]
listen http_web xxx.yyy.zzz.aaa:80
bind *:80
#bind *:443 ssl crt /etc/ssl/iredmail.org/iredmail.org.pem
bind *:443 ssl crt /etc/haproxy/certs/ha2.domain.com.pem
redirect scheme https if !{ ssl_fc }
mode http
balance roundrobin # Load Balancing algorithm
option httpchk
option forwardfor
cookie SRVNAME insert
server mail1 bbb.ccc.ddd.eee:80 weight 1 maxconn 512 cookie SA check
server mail2 bbb.ccc.fff.ggg:80 weight 1 maxconn 512 cookie SB check
# [HTTPS Site Configuration]
listen https_web xxx.yyy.zzz.aaa:443
mode tcp
balance source# Load Balancing algorithm
reqadd X-Forwarded-Proto:\ http
server mail1 bbb.ccc.ddd.eee:443 weight 1 maxconn 512 check
server mail2 bbb.ccc.fff.ggg:443 weight 1 maxconn 512 check
# Reporting
listen stats
bind :9000
mode http
# Enable statistics
stats enable
# Hide HAPRoxy version, a necessity for any public-facing site
stats hide-version
# Show text in authentication popup
stats realm Authorization
# URI of the stats page: localhost:9000/haproxy_stats
stats uri /haproxy_stats
# Set a username and password
stats auth Username:Password
谢谢
答案1
由于您不打算访问名称为mail1.domain.com
或 的服务器mail2.domain.com
,因此最简单的方法是为两台服务器获取名称为 的证书mailserver.domain.com
。
如果您希望服务器能够通过其自己的名称进行访问,请获取同时具有个人名称mail1.domain.com
或mail2.domain.com
和通用名称的证书mailserver.domain.com
。