本文介紹了如何為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_protocols
andssl_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_protocols
ssl_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...