Apache-2.2

如何將 2 個不同的域指向 1 個 IP 地址(Apache)?

  • June 9, 2014

我有兩個不同的域名,我想將它們託管在我擁有的同一個私人主機上。我希望它們指向相同的 IP 地址,但具有不同的內容(當然)。我怎樣才能做到這一點?有不同的方法可以做到這一點嗎?在那種情況下,最好的方法是什麼。謝謝。

您可能想要使用 Apache 的虛擬主機。這是一種在單個 IP 地址上託管多個域的良好支持方法。

http://httpd.apache.org/docs/2.2/vhosts/

具體來說,基於名稱的虛擬主機:http ://httpd.apache.org/docs/2.2/vhosts/name-based.html

Apache2 支持根據域名提供不同的內容,即使所有這些域都解析為相同的 IP 地址。每個域名都由一個虛擬主機處理,因此稱為基於名稱的虛擬主機

這是兩個域的範例配置:

NameVirtualHost *:80

<VirtualHost *:80>
 ServerName www.yourfirstdomain.tld
 DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>

<VirtualHost *:80>
 ServerName www.yourseconddomain.tld
 DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

您將在此處找到有關基於名稱的虛擬主機支持的官方文件。

但是,請注意,這僅適用於普通 HTTP 連接,不適用於 HTTPS(基於 SSL 的 HTTP):基於名稱的虛擬主機依賴於知道請求的名稱,但在加密 SSL 之前,Apache 無法知道此資訊連接建立。

如果您的設置也需要使用 HTTPS,則需要依賴 SSL 協議的擴展,稱為伺服器名稱指示(SNI) ( RFC4366 )。基本上,啟用 SNI 的客戶端(例如:Web 瀏覽器)在建立加密的 SSL 連接時會添加額外的純文字資訊,從而允許伺服器在 SSL 連接準備好之前知道所請求的名稱。

所有瀏覽器尚不支持 SNI。在撰寫本文時,根據維基百科,這些是:

  • Internet Explorer 7 或更高版本,Windows Vista 或更高版本(不適用於 XP,甚至 IE 8)
  • Mozilla Firefox 2.0 或更高版本
  • Opera 8.0 或更高版本(必須啟用 TLS 1.1 協議)
  • Android 上的 Opera Mobile 至少 10.1 測試版
  • Google Chrome(Vista 或更高版本,Chrome 6 或更高版本上的 XP,Chrome 5.0.342.1 或更高版本上的 OS X 10.5.7 或更高版本)
  • Safari 2.1 或更高版本(Mac OS X 10.5.6 或更高版本和 Windows Vista 或更高版本)
  • Konqueror/KDE 4.7 或更高版本
  • Apple iOS 4.0 或更高版本中的 MobileSafari
  • Honeycomb (v3.x) 或更新版本上的 Android 預設瀏覽器
  • 視窗電話 7
  • Maemo 上的 MicroB

託管多個可通過 HTTPS 訪問的基於名稱的虛擬主機需要您啟用 mod_ssl 並添加與上例類似的配置:

Listen 443      
NameVirtualHost *:443

# Accept connections for these vhosts from non-SNI clients
# Clients without SNI will be handled by the first defined vhost.
# If you only want SNI-enabled client, put on instead
SSLStrictSNIVHostCheck off

<VirtualHost *:443>
 ServerName www.yourfirstdomain.tld
 DocumentRoot /www/yourfirstdomain.tld/    
</VirtualHost>

<VirtualHost *:443>
 ServerName www.yourseconddomain.tld
 DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

請記住,使用 SSL 需要您為您的域購買 SSL 證書 - 或生成一些自動簽名的證書,並將 Apache 配置為使用它們進行 SSL 連接。

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