Ssl

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

  • August 19, 2020

我有一個後端伺服器 (Apache),它離我們的大多數使用者都太遠了,所以我們的想法是實現一個更接近的反向代理來充當記憶體。

乍一看,它就像一種魅力。記憶體的靜態文件的服務速度非常快,但對於其他任何事情,反向代理 (NGINX) 都需要連接到後端伺服器,這需要一些時間來進行 SSL 握手,從而使這些第一個請求變慢。

我正在搜尋這方面的資訊,但我找不到保持這種聯繫的方法。有沒有辦法做到這一點?

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

你們中是否有人對學習/使用/搜尋什麼有任何想法或提示以實現這一目標?

非常感謝您!

keepalive在 nginx 中,如果連接是在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打開的連接數少於此。後端伺服器將有自己的 keepalive 超時,您還需要單獨調整。

引用自:https://serverfault.com/questions/1030698