Apache2

如何根據主機名將 https 請求轉發到另一台主機

  • August 27, 2018

我的情況:

我有三個 ubuntu 伺服器、一個 NAT 路由器和三個域名和三個 apache 網站。兩個域 Ipadress 是 NAT 路由器的 WAN ip。來自網際網路的所有 https 流量都轉發到伺服器一。每個伺服器都有自己的網站證書。

有人嘗試連接:

如果請求的主機名是網站 1 的主機名。伺服器 1 顯示網站 1。如果請求的主機名是網站 2 或 3。然後伺服器 1 將連接轉發到伺服器 2 或 3。伺服器 2 或 3 顯示網站 2 或 3 .

記住伺服器 1 沒有伺服器 2 或 3 的密鑰。

我有兩個問題。

  1. 這是否可能不會像中間人那樣出現錯誤。
  2. 如何編輯有效的 apache 配置。

研究:

我在Google上搜尋瞭如何將 https 請求轉發到另一個 https 主機。大多數答案是伺服器 1 擁有所有公共證書和密鑰。並且您需要為伺服器 2 或 3 製作另一個證書和密鑰。(在我的情況下是自簽名證書)。但我不希望伺服器 1 擁有伺服器 2 或 3 的私鑰。因為伺服器 1、2 或 3 的公共 IP 相同,所以伺服器 1 可能沒有私鑰。

我還發現瞭如何在一台具有不同證書的伺服器上擁有多個 https 虛擬主機。不,因為每個伺服器都有自己的網站。

有人能幫我嗎?

這可以使用 Apache 的反向代理功能來實現。在伺服器 1 的 Apache 配置中,您將VirtualHost使用主機名和 SSL 配置為伺服器 2 和 3 上的站點創建定義,並ProxyPass用於通過伺服器 1 將連接代理回這些伺服器。

另一種方法是在所有三台伺服器前執行 NGINX 之類的東西,讓您的 HTTP/HTTPS 流量 NAT’d 到 NGINX,並將其配置為對所有三台伺服器執行 SSL 終止和反向代理

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