Ubuntu
Apache 基於名稱的虛擬主機中的 ServerName 萬用字元?
在我們的 LAN 上,我在 DNS 伺服器中設置了幾個“假”TLD,目的是將它們用於基於 Apache 名稱的虛擬主機。我想將此與 Ubuntu 10.04 LAMP 伺服器上的大規模虛擬主機(即 VirtualDocumentRoot)結合起來。
但是,我無法選擇正確的虛擬主機!
以下是 Apache 配置的摘要:
NameVirtualHost 10.10.0.205 <VirtualHost 10.10.0.205> ServerName *.test VirtualDocumentRoot /var/www/%-3.0.%-2/test/%1/ CustomLog /var/log/apache2/access.log vhost_combined </VirtualHost> <VirtualHost 10.10.0.205> ServerName *.dev VirtualDocumentRoot /var/www/%-3.0.%-2/dev/%1/ CustomLog /var/log/apache2/access.log vhost_combined </VirtualHost>
諸如www.domain.com.dev之類的主機名正確地解析為 10.10.0.205,但始終選擇頂部的虛擬主機,而不是底部的虛擬主機,這更接近匹配。
我的印像是 Apache 在預設為給定 IP 的頂級虛擬主機之前會首先嘗試匹配 ServerName。我究竟做錯了什麼?或者這是不可能的,我必須為每個 TLD 使用另一個 IP 嗎?
apachectl -S 輸出(修剪):
10.10.0.205:* is a NameVirtualHost default server *.test port * namevhost *.test port * namevhost *.dev
使用
ServerAlias
,而不是ServerName
單獨使用:
ServerName somename.dev
ServerAlias *.dev
如果這可以幫助,只是為了完成一點莫的回答:
ServerAlias 中的萬用字元也適用於部分域名,例如
ServerName somename.dev
ServerAlias *-mysite.dev
它最近救了我的命 ^^(一個主站點,每個子應用程序都有子域,例如
admin-somename.dev
,bo-somename.dev
,api-somename.dev
…)