Apache 虛擬主機(jī)里的 ServerName 指令
時(shí)間:2023-07-12 11:54:02 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2023-07-12 11:54:02 來源:網(wǎng)站運(yùn)營
Apache 虛擬主機(jī)里的 ServerName 指令:術(shù)語虛擬主機(jī)(Virtual host)是指在一臺(tái)機(jī)器上運(yùn)行多個(gè)網(wǎng)站(例如 http://company1.example.com 和 http://company2.example.com)的做法。
虛擬主機(jī)可以是“基于 IP”的,這意味著每個(gè)網(wǎng)站都有不同的 IP 地址,也可以是“基于名稱的”,這意味著在每個(gè) IP 地址上運(yùn)行多個(gè)名稱。 它們在同一臺(tái)物理服務(wù)器上運(yùn)行的事實(shí)對最終用戶來說并不明顯。
<VirtualHost>
和
</VirtualHost>
用于包含一組僅適用于特定虛擬主機(jī)的指令。 可以使用虛擬主機(jī)上下文中允許的任何指令。 當(dāng)服務(wù)器收到對特定虛擬主機(jī)上的文檔的請求時(shí),它會(huì)使用包含在
<VirtualHost>
部分中的配置指令。 Addr 可以是以下任何一個(gè),可以選擇后跟一個(gè)冒號和一個(gè)端口號(或 *).
ServerName 指令:ServerName 指令設(shè)置服務(wù)器用于標(biāo)識(shí)自身的請求方案、主機(jī)名和端口。
當(dāng)使用基于名稱的虛擬主機(jī)時(shí),ServerName 用于(可能與 ServerAlias 結(jié)合使用)來唯一標(biāo)識(shí)虛擬主機(jī)。
此外,當(dāng) UseCanonicalName 設(shè)置為非默認(rèn)值時(shí),在創(chuàng)建自引用重定向 URL 時(shí)使用它。
例如,如果托管 Web 服務(wù)器的機(jī)器的名稱是 http://simple.example.com,但該機(jī)器也有 DNS 別名 http://www.example.com,并且希望如此標(biāo)識(shí) Web 服務(wù)器,則應(yīng)使用以下指令 :
ServerName www.example.com
ServerName 指令可以出現(xiàn)在服務(wù)器定義中的任何地方。 但是,每個(gè)外觀都會(huì)覆蓋以前的外觀(在該服務(wù)器內(nèi))。
如果未指定 ServerName,服務(wù)器會(huì)嘗試通過首先向操作系統(tǒng)詢問系統(tǒng)主機(jī)名來推斷客戶端可見主機(jī)名,如果失敗,則對系統(tǒng)上存在的 IP 地址執(zhí)行反向查找。
如果未在 ServerName 中指定端口,則服務(wù)器將使用來自傳入請求的端口。 為了獲得最佳的可靠性和可預(yù)測性,您應(yīng)該使用 ServerName 指令指定一個(gè)明確的主機(jī)名和端口。
如果您使用基于名稱的虛擬主機(jī),則
<VirtualHost>
部分中的 ServerName 指定主機(jī)名必須出現(xiàn)在請求的 Host: 標(biāo)頭中以匹配該虛擬主機(jī)。
有時(shí),服務(wù)器在處理 SSL 的設(shè)備后面運(yùn)行,例如反向代理、負(fù)載平衡器或 SSL 卸載設(shè)備。 在這種情況下,請?jiān)?ServerName 指令中指定客戶端連接到的 https:// 方案和端口號,以確保服務(wù)器生成正確的自引用 URL。
一個(gè)例子: