Apache-2.2
Apache2 預設虛擬主機按字母順序排列還是用_default_ 虛擬主機覆蓋?
我在 Apache Web 伺服器(CentOS 5、Apache 2.2.3)上有多個命名虛擬主機。
每個虛擬主機都有自己的配置文件
/etc/httpd/vhosts.d
,這些虛擬主機配置文件包含在主 httpd conf 中…Include vhosts.d/*.conf
這是 vhost confs 之一的範例…
NameVirtualHost *:80 <VirtualHost *:80> ServerName www.domain.biz ServerAlias domain.biz www.domain.biz DocumentRoot /var/www/www.domain.biz <Directory /var/www/www.domain.biz> Options +FollowSymLinks Order Allow,Deny Allow from all </Directory> CustomLog /var/log/httpd/www.domain.biz_access.log combined ErrorLog /var/log/httpd/www.domain.biz_error.log </VirtualHost>
現在,當有人嘗試使用公共 IP 地址直接訪問伺服器時,他們會獲得聚合配置中指定的第一個虛擬主機(因此在我的情況下,它是
vhosts.d
目錄中的字母順序)。任何人直接通過 IP 地址訪問伺服器,我希望他們只獲得 403 或 404。我發現了幾種設置預設/包羅萬象的虛擬主機的方法和一些相互矛盾的意見。
- 我可以在 vhosts.d 中創建一個名為 000aaadefault.conf 的新 vhost conf 或其他東西,但這感覺有點討厭。
- 在包含目錄之前,我的 main 中可能有一個
<VirtualHost>
塊。httpd.conf``vhosts.d
- 我可以
DocumentRoot
在我的 main 中指定一個httpd.conf
httpd.conf
在_default_
http://httpd.apache.org/docs/2.2/vhosts/examples.html#default中指定一個預設虛擬主機怎麼樣?在我之前有一個
<VirtualHost _default_:*>
塊是最好的方法嗎?httpd.conf``Include vhosts.d/*.conf
設置 a
<VirtualHost _default_:*>
不會做任何事情,它不會優先於配置為的虛擬主機<VirtualHost *:80>
(除了 80 以外的埠)。
_default_
只能與基於 IP 的虛擬主機一起使用。從文件中:預設虛擬主機從不服務發送到用於基於名稱的虛擬主機的地址/埠的請求。
如果濫用字母順序來設置預設值感覺很髒,也許將您的預設基於名稱的虛擬主機放在您的 main行
httpd.conf
之前Include
?