Ssl
haproxy SSL“失敗鯨魚”維護頁面
我們正在使用 haproxy 的自定義錯誤頁面功能來顯示“失敗鯨魚”維護頁面,同時我們正在對我們的站點進行部署。
但是,由於 haproxy 無法向 SSL 使用者顯示自定義錯誤頁面,如果沒有可用的後端,我如何將使用者重定向到非 SSL 連接,以顯示“失敗鯨魚”?
我最終在負載均衡器上安裝了 stunnel,並通過隧道將流量重定向回埠 80。
HTTPs 客戶端 => haproxy:443 =>(沒有可用的後端,使用“備份”伺服器 127.0.0.1:4443)=> 127.0.0.1:443(stunnel)=> 127.0.0.1:80(haproxy,帶有故障鯨魚頁面)
haproxy.conf
listen SSL-via-shared-ip 1.2.3.2:443 mode tcp option ssl-hello-chk #option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www option httpchk HEAD /test.txt HTTP/1.0 # list of web servers server app1 1.2.3.4:443 check port 80 maxconn 60 server app2 1.2.3.5:443 check port 80 maxconn 60 server failwhale 127.0.0.1:4443 backup maxconn 500 #error pages# ##these are in raw http, not just html ## errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http
stunnel.conf
; Protocol version (all, SSLv2, SSLv3, TLSv1) sslVersion = all options = NO_SSLv2 ; PID is created inside the chroot jail pid = /var/run/stunnel4/stunnel4.pid ; Some performance tunings socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 ; Some debugging stuff useful for troubleshooting debug = 7 output = /var/log/stunnel4/stunnel.log ; Certificate/key is needed in server mode and optional in client mode cert = /etc/ssl/certs/stunnel.pem key = /etc/ssl/certs/stunnel.pem ; Some security enhancements for UNIX systems - comment them out on Win32 ;chroot = /var/lib/stunnel4/ setuid = stunnel4 setgid = stunnel4 ; Service-level configuration [failwhale] accept = 4443 connect = 127.0.0.1:80 TIMEOUTclose = 0
據我了解,您無法從 haproxy 中重定向客戶端,因為它根本無法與 SSL 連接進行互動(無法解密請求或使用重定向加密響應)。連接必須轉到支持 SSL 的某些伺服器才能執行此操作。
我唯一能想到的就是使用 SSL 密鑰/證書和失敗的鯨魚頁面設置另一個網路伺服器(甚至可以在 haproxy 機器本身的某個奇怪埠上執行,使用
localhost:4433
或類似的東西),並讓 haproxy 發送維護期間到該伺服器的所有 SSL 連接。