Haproxy
在 Haproxy 中配置多個 SSL 證書
我的 haproxy 實例服務於 2 個域(主要是為了避免主站點上的 XSS)。
規則看起來像這樣
bind :443 ssl crt /etc/ssl/haproxy.pem acl is_static hdr_end(Host) -i example.com acl is_api hdr_end(Host) -i api.example.com acl is_files hdr_end(Host) -i example.io redirect scheme https if !{ ssl_fc } is_static is_api
現在 SSL
/etc/ssl/haproxy.pem
用作預設證書,它是用於example.com
而不是example.io
.如何為多個域名指定證書?
您可以將所有證書連接到文件中
haproxy1.pem
,haproxy2.pem
或者您可以指定一個包含所有 pem 文件的目錄。cat cert1.pem key1.pem > haproxy1.pem cat cert2.pem key2.pem > haproxy2.pem
然後在配置上使用這樣的東西:
defaults log 127.0.0.1 local0 option tcplog frontend ft_test mode http bind 0.0.0.0:443 ssl crt /certs/haproxy1.pem crt /certs/haproxy2.pem use_backend bk_cert1 if { ssl_fc_sni my.example.com } # content switching based on SNI use_backend bk_cert2 if { ssl_fc_sni my.example.org } # content switching based on SNI backend bk_cert1 mode http server srv1 <ip-address2>:80 backend bk_cert2 mode http server srv2 <ip-address3>:80
閱讀更多關於SNI
請記住,SSL 支持正在為 haproxy 開發階段,而且它顯然對性能有相當大的影響。
此執行緒中還討論了其他解決方案:https ://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites
希望這可以幫助。