Apache-2.2
在單個 IP 地址上執行多個可公開訪問的 Web 伺服器
我在一個只有一個公共 IP 地址的網路上擁有三個具有三個不同內部 IP 地址的獨立 Web 伺服器。每個 Web 伺服器都有安全限制,因此我不能只在單個 Web 伺服器上執行我的所有網站。所有人都在執行 Apache。
我想設置允許我遠端訪問每個不同 Web 伺服器的子域,所有這些都在埠 80 上。例如,
site1.domain.com
site2.domain.com
site3.domain.com
這三個域都解析為我的單個公共 IP 地址,但某種類型的服務會檢查請求以查看正在請求哪個子域並從相應的伺服器中提取數據。
這種事情(1)是否可能並且(2)易於實施?我正在執行 Ubuntu Server 9.04。
這稱為反向代理,您可以將埠 80 上的所有流量重定向到一個 Apache 伺服器,配置 3 個虛擬主機(每個子域 1 個)並在 2 個虛擬主機處理非本地網站中使用 Apache ProxyPass指令告訴 apache 從另一台伺服器載入內容.
nginx也可以充當反向代理。您可以將所有請求轉發到 nginx,然後 nginx 將根據子域將內容載入到正確的伺服器上。
我會使用 Apache proxypass 功能,從我的角度來看它更容易設置。
您還可以啟動僅充當反向代理的第 4 個 apache 伺服器。在這種情況下,所有 3 個 vhost 都將使用 proxypass 從正確的伺服器獲取內容。
有關範例,請參見http://www.raskas.be/blog/2006/04/21/reverse-proxy-of-virtual-hosts-with-apache-2/ ,您的情況與您擁有第三個的情況相同子域(因此您還需要 1 個虛擬主機)。