Apache2
如何根據主機名將 https 請求轉發到另一台主機
我的情況:
我有三個 ubuntu 伺服器、一個 NAT 路由器和三個域名和三個 apache 網站。兩個域 Ipadress 是 NAT 路由器的 WAN ip。來自網際網路的所有 https 流量都轉發到伺服器一。每個伺服器都有自己的網站證書。
有人嘗試連接:
如果請求的主機名是網站 1 的主機名。伺服器 1 顯示網站 1。如果請求的主機名是網站 2 或 3。然後伺服器 1 將連接轉發到伺服器 2 或 3。伺服器 2 或 3 顯示網站 2 或 3 .
記住伺服器 1 沒有伺服器 2 或 3 的密鑰。
我有兩個問題。
- 這是否可能不會像中間人那樣出現錯誤。
- 如何編輯有效的 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 終止和反向代理。