帶有 SSL 的 ELB 會傳遞到 nginx 或 haproxy。哪個適合處理更多證書?

帶有 SSL 的 ELB 會傳遞到 nginx 或 haproxy。哪個適合處理更多證書?

因此,我計劃使用一個帶有 SSL 直通功能的 ELB 來連接到運行 haproxy 或 nginx 的伺服器。

我將託管潛在的數千個 Lets-Encrypt 憑證。

nginx 還是 haproxy 比較擅長處理數千個 ssl 憑證?或者說在這方面基本上沒有差別?

我想在 haproxy 或 nginx 上終止 SSL,並且有這麼多憑證檔案等。

答案1

根據彈性負載平衡器文檔,經典負載平衡器允許每個偵聽器使用單一證書,最多可有 100 個偵聽器(在不同連接埠上)。

應用程式負載平衡器另一方面,每個平衡器的憑證數量限制為 25 個,儘管您可以將所有憑證與同一個偵聽器一起使用。

我想說,對於如此大量的證書,唯一可行的方法是將 EC2 執行個體部署在網路負載平衡器後面,該負載平衡器在較低的網路層中工作,並將 SSL 協商完全委託給後端執行個體。

如果您的工作負載是面向 HTTP 的,我認為 Nginx 會比 HAProxy 更好。如果您打算代理其他協議,HAproxy是您的最佳選擇。

答案2

兩者都很棒。我個人會使用 nginx,因為從這個角度來看(根據我的理解)你沒有運行多個後端,所以你不需要在這方面使用 haproxy。

只需使用 ssl 和代理通道設定 nginx :)

答案3

我認為使用 HAProxy 加載數千個憑證更容易。您需要做的就是將您的證書放在一個目錄中,HAProxy 將使用以下內容加載所有證書crt指令

因此 ssl 卸載的最小配置是:

listen ssl_offload
   mode http
   bind IP:443 ssl crt <path-to-ssl-directory>
   timeout     client  30s
   timeout     server  30s
   timeout     connect 5s
   server srv1 IP:80 check 

HAProxy 將根據客戶端提供的 SNI 主機名稱(目前為支持的大多數現代瀏覽器)。

載入多個 SSL 憑證只是記憶體消耗的問題。 HAProxy 需要有一個 PEM 文件,其中包含所需的憑證和任何關聯的私鑰。因此,如果平均 PEM 檔案約為 5K(2048 rsa 金鑰),則載入數百萬個檔案將花費您大約 5GB 的記憶體。

現在,雖然 HAProxy 為每個偵聽器分配證書,但我認為 NGINX 為每個「伺服器名稱」分配證書,因此您將需要與您擁有的網域一樣多的伺服器區塊。如果您使用數千個它們,您可能需要編寫腳本。

相關內容