<-
Apache > HTTP 伺服器 > 文件 > 版本 2.4 > 虛擬主機

Apache 基於 IP 的虛擬主機支援

可用語言:  en  |  fr  |  ja  |  ko  |  tr 

Support Apache!

另請觀看

top

什麼是基於 IP 的虛擬主機

基於 IP 的虛擬主機是一種根據要求收到的 IP 位址和埠套用不同指令的方法。最常見的是用於在不同的埠或介面上提供不同的網站。

基於名稱的虛擬主機 在許多狀況中較為便利,因為它允許多個虛擬主機共用單一地址/埠。請參閱 基於名稱與基於 IP 的虛擬主機比較 來協助您做決定。

top

系統需求

正如術語 基於 IP 指出的,伺服器對於每個基於 IP 的虛擬主機,都必須有不同的 IP 位址/埠組合。這可藉由讓機器具備多個實體網路連線,或使用由大多數現代作業系統支援的虛擬介面來達成 (詳細資訊請參閱系統文件,這些通常稱為「IP 別名」,而「ifconfig」指令最常被用於設定它們),以及/或使用多個埠號。

在 Apache HTTP 伺服器的術語中,使用單一 IP 位址但多個 TCP 埠,也稱為基於 IP 的虛擬主機。

top

如何設定 Apache

有兩種方法可以設定 apache 來支援多個主機。一種是針對每個主機名稱執行單獨的 httpd 守護程式,另一種是執行支援所有虛擬主機的單一守護程式。

在以下情況下使用多個守護程式

在下列情況中使用單一 daemon

top

設定多個 daemon

為每個虛擬主機建立一個獨立的 httpd 安裝。對於每個安裝,在組態檔中使用 監聽 指令來選擇該 daemon 服務的 IP 位址(或虛擬主機)。例如:

Listen 192.0.2.100:80

建議您使用 IP 位址而不是主機名稱(請參閱 DNS 注意事項)。

top

設定具有虛擬主機的單一 daemon

對於這種情況,單一的 httpd 將會為主要伺服器和所有虛擬主機處理要求。組態檔中的 VirtualHost 指令用於設定 ServerAdminServerNameDocumentRootErrorLogTransferLogCustomLog 組態指令不同的值,以適用於每個虛擬主機。例如:

<VirtualHost 172.20.30.40:80>
    ServerAdmin webmaster@www1.example.com
    DocumentRoot "/www/vhosts/www1"
    ServerName www1.example.com
    ErrorLog "/www/logs/www1/error_log"
    CustomLog "/www/logs/www1/access_log" combined
</VirtualHost>

<VirtualHost 172.20.30.50:80>
    ServerAdmin webmaster@www2.example.org
    DocumentRoot "/www/vhosts/www2"
    ServerName www2.example.org
    ErrorLog "/www/logs/www2/error_log"
    CustomLog "/www/logs/www2/access_log" combined
</VirtualHost>

建議您在 <VirtualHost> 指令中使用 IP 位址而不是主機名稱(請參閱 DNS 注意事項)。

特定 IP 位址或連接埠優先於其萬用字元等效項,且任何匹配的虛擬主機都優先於伺服器的基本組態。

幾乎任何組態指令都可放入 VirtualHost 指令中,但用於控制程序建立的指令和一些其他指令除外。若要找出某個指令是否可用於 VirtualHost 指令,請使用指令索引檢查內容

如果使用suEXEC 外殼程式SuexecUserGroup 可用於 VirtualHost 指令內部。

安全性:指定記錄檔案寫入位置時,請注意一些安全風險,前提是啟動 Apache 的使用者以外的人員有寫入他們寫入的目錄存取權。有關詳細資訊,請參閱安全提示文件。

可用語言:  en  |  fr  |  ja  |  ko  |  tr 

top

留言

注意事項
此處並非問答區。在此處輸入的意見應針對改善文件或伺服器提出建議,若這些意見已實施或被視為無效/離題,我們的管理員可能會移除。對於如何管理 Apache HTTP Server 的問題,應發送至我們的 IRC 頻道(#httpd,在 Libera.chat 上),或寄送至我們的郵件串列