保持反向代理和後端伺服器之間的 SSL 連線處於活動狀態

保持反向代理和後端伺服器之間的 SSL 連線處於活動狀態

我有一個後端伺服器(Apache),距離我們大多數用戶太遠,所以我們的想法是實現一個更近的反向代理來充當快取。

乍一看,它很有魅力。快取的靜態檔案的服務速度非常快,但對於其他任何事情,反向代理 (NGINX) 需要連接到後端伺服器,這需要一些時間進行 SSL 握手,從而使這些首次請求變慢。

我正在尋找這方面的信息,但找不到保持這種聯繫的方法。有辦法做到嗎?

我什至嘗試了解有關 websockets 的更多信息,但我能找到的所有實現都是為了回答特定請求,而不是保持兩個 Web 伺服器之間的連接(反向代理的 NGINX 和後端的 Apache)。

為了實現這一目標,你們中的任何人對於學習/使用/搜尋什麼有任何想法或建議嗎?

先非常感謝!

答案1

在nginx中你只能指定keepalive對於上游連接,如果該連接是在upstream堵塞。例如:

upstream backend {
    server private-api.example.com:443;

    keepalive 32;
}

此處,keepalive指定每個進程同時開啟到上游伺服器的最大連線數。工作行程

要使用上游,您需要在您的proxy_pass後端地址中指定其名稱。

例如,如果您以前使用過:

     proxy_pass https://private-api.example.com:443;

您可以將其變更為:

     proxy_pass https://backend;

從字面上替換定義的上游名稱server

您還必須將 HTTP 版本設為 1.1(因為預設為 1.0 相當荒謬)並清除 Connection 標頭:

    proxy_http_version 1.1;
    proxy_set_header Connection "";

請記住,keepalive_timeout您也可以在其中定義upstream您可能需要調整的內容。預設情況下,該時間為 60 秒,因此如果連線空閒了那麼長時間,即使開啟的連線數少於keepalive連線數,該連線也會關閉。後端伺服器將有自己的保活逾時,您也需要單獨調整。

相關內容