Networking
haproxy 同一埠上的兩個應用程序具有不同的證書
我正在設置 haproxy。我的配置是:
frontend bothApps bind *:9999 mode http acl prov path_end -i /prov-0.0.1-SNAPSHOT/ acl web path end -i /web-0.0.1-SNAPSHOT/ acl prov1 path_end -i /prov-0.0.1-SNAPSHOT/testAuthenticated.html acl web1 path_end -i /web-0.0.1-SNAPSHOT/testAuthenticated.html use_backend focus if prov use_backend focus if prov1 use_backend cnt if web use_backend cnt if web1
並且在沒有 https 的情況下也可以正常工作。現在我想添加 https,但是兩個應用程序都應該在埠
8443
(https://localhost:8443/prov-0.0.1-SNAPSHOT
和https://localhost:8443/web-0.0.1-SNAPSHOT
) 上呼叫 haproxy,但使用不同的證書 - prov(haproxyPROV.pem
)、web(haproxyWEB.pem
)。我該如何配置它?我試過:
frontend https bind *:8443 ssl crt /etc/haproxy/haproxyWEB.pem mode http
但在這裡我每個埠只能有一個證書
您可以在一個埠上使用多次證書:
frontend foo bind *:8443 ssl crt /path/to/cert1.pem crt /path/to/cert2.pem
Haproxy 使用 TLS SNI 將證書與連接匹配(如果 SNI 不存在或發現不匹配,則
bind
使用第一個線上證書(上例中的 cert1.pem))。因此,為了實現您的目標,您必須將兩個不同的域名指向此主機:埠。喜歡web.example.com
並prov.example.com
指向同一個主機。我猜這就是所有這些評論的內容。旁注,您
path_end
在 ACL 中使用,例如acl prov path_end -i /prov-0.0.1-SNAPSHOT/
,但這也將匹配/foobar/prov-0.0.1-SNAPSHOT/
and/web-0.0.1-SNAPSHOT/prov-0.0.1-SNAPSHOT/
,這可能是您想要的,也可能不是。通常path
或path_beg
更合適。