Nginx設定TCP上游伺服器的SSL配置

2021-09-29 20:48:26 字數 2863 閱讀 2405

本文介紹了如何為nginx plus和接受tcp連線的負載均衡的伺服器組設定ssl

ssl終端意味著nginx plus充當與客戶端連線的伺服器端ssl端點:它執行對請求的解密和對響應的加密,否則後端伺服器就必須這樣做。該操作稱為終止,因為nginx plus關閉了客戶端連線,並通過新建立的未加密連線將客戶端資料**到上游組中的伺服器。在r6和更高版本中,nginx plus對tcp連線和http連線執行ssl終止。

首先,您將需要獲取伺服器證書和私鑰,並將它們放在伺服器上。可以從可信證書頒發機構(ca)獲得證書,也可以使用ssl庫(例如openssl)生成證書。

要配置ssl終止,請在nginx plus配置中新增以下指令:

要啟用ssl,請為將連線傳遞到上游伺服器組的tcp伺服器指定指令的ssl引數listen

stream 

}

要新增ssl證書,請使用ssl_certificate指令指定證書的路徑(必須採用pem格式),並在指令中指定私鑰的路徑ssl_certificate_key

server

此外,ssl_protocolsandssl_ciphers指令可用於限制連線並僅包括ssl / tls的強版本和密碼:

server

ssl_ciphers指令告訴nginx通知ssl庫它喜歡哪種密碼。

實施ssl / tls可能會嚴重影響伺服器效能,因為ssl握手操作(客戶端和伺服器交換一系列訊息以驗證連線是否可信任)會占用大量cpu。ssl握手的預設超時為60秒,可以使用ssl_handshake_timeout偽指令重新定義。我們不建議將此值設定得太低或太高,因為這可能導致握手失敗或等待握手完成的時間較長:

server

建立適用於每個ssl / tls連線的會話引數的快取可以減少握手次數,從而可以顯著提高效能。快取是通過ssl_session_cache偽指令設定的:

ssl_session_cache;

預設情況下,nginx plus使用built-in會話快取的型別,這意味著您的ssl庫中內建了快取。這不是最佳選擇,因為這樣的快取只能由乙個工作程序使用,並且可能導致記憶體碎片。設定ssl_session_cache指令以shared在所有工作程序之間共享快取,這可以加快以後的連線速度,因為連線設定資訊是已知的:

ssl_session_cache shared:ssl:1m;

作為參考,乙個1 mb的共享快取可以容納大約4,000個會話。

預設情況下,nginx plus將快取的會話引數保留五分鐘。將的值ssl_session_timeout增加到幾個小時可以提高效能,因為重新使用快取的會話引數可以減少耗時的握手次數。當您增加超時時,快取需要更大,以容納產生的更多快取引數。對於以下示例中的4小時超時,適合使用20 mb的快取:

ssl_session_timeout 4h;

如果超時長度增加,則需要更大的快取來儲存會話,例如20 mb:

server

這些行建立了乙個20 mb的記憶體中快取記憶體來儲存會話資訊,並指示nginx plus在新增會話引數後的4小時內重新使用快取記憶體中的會話引數。

會話票證是會話快取的替代方法。會話資訊儲存在客戶端,因此無需伺服器端快取即可儲存會話資訊。當客戶端恢復與後端伺服器的互動時,它會顯示會話票證,並且不需要重新協商。將ssl_session_tickets指令設定為on

server

將會話票證用於上游組時,必須使用相同的會話金鑰初始化每個上游伺服器。最佳做法是經常更改會話金鑰,我們建議您實施一種機制,以在所有上游伺服器之間輪換共享金鑰:

server

stream 

server

}

在此示例中,該server塊中的指令指示nginx plus終止並解密來自客戶端的安全tcp流量,並將未加密的流量傳遞給stream_backend由三颱伺服器組成的上游組。

偽指令的ssl引數listen指示nginx plus接受ssl連線。當客戶端請求安全的tcp連線時,nginx plus將啟動握手過程,該過程將使用ssl_certificate指令指定的pem格式證書,指令指定的證書私鑰以及and 指令ssl_certificate_key列出的協議和密碼。ssl_protocolsssl_ciphers

一旦建立了安全的tcp連線,nginx plus就會根據ssl_session_cache指令快取會話引數。在該示例中,會話快取記憶體在所有工作程序(shared引數)之間共享,大小為20 mb(20m引數),並且將每個ssl會話保留4小時以供重用(ssl_session_timeout指令)。

要了解有關nginx plus的更多資訊,請參閱我們的商業訂閱的描述。

Nginx之Memcached上游伺服器

memcached是高效能的分布式記憶體快取伺服器。一般的使用目的是,通過快取資料庫查詢結果,減少資料庫訪問次數,以提高動態web應用的速度 提高可擴充套件性。在nginx中,memcached模組預設是開啟的,它負責與memcached守護程序通訊。因此,客戶端和memcached守護程序之間沒有...

nginx 上游伺服器互動出錯的處理

當與上游的互動出現錯誤時,nginx並不想立刻認為這個請求處理失敗,而是試圖多給上游伺服器一些機會,可以重新向這台或者另一台上游伺服器發起連線 傳送請求 接受響應,以避免網路故障。ngx http upstream next方法在結束請求之前,會檢查ngx peer connection t結構體的...

TCP伺服器模型

迴圈伺服器 迴圈伺服器在同乙個時刻只可以響應乙個客戶端的請求 併發伺服器 併發伺服器在同乙個時刻可以響應多個客戶端的請求 9.1 迴圈伺服器 udp伺服器 udp迴圈伺服器的實現非常簡單 udp伺服器每次從套接字上讀取乙個客戶端的請求,處理,然後將結果返回給客戶機.可以用下面的演算法來實現.sock...