Apache 中不匹配域/子域的預設處理

Apache 中不匹配域/子域的預設處理

我有一個包含多個虛擬主機的 Apache2 設定。我的 DNS 設定為接受*.<domain>.<tld>多個網域。一切工作正常,但如果我去,something-random-here.example.com我似乎選擇了一個無效的虛擬主機(我猜它找到的第一個或最後一個)。如果沒有 VirtualHost 條目與網域或子網域匹配,是否有辦法告訴 Apache 使用某些規則?我更願意返回 404。

答案1

如果沒有名稱匹配,Apache 將使用第一個虛擬主機。只需將新的虛擬主機配置為第一個,並使用隨機名稱,顯示您喜歡的任何內容 - 或返回 404 頁面。

答案2

通配符包括您的網站設定檔:

Include path/to/site/confs/*httpd.conf

組織您的網站配置文件,以便它們按預期順序加載。例子...

01-httpd.conf

02-site1-httpd.conf

03-site2-httpd.conf

ETC...

Apache 將依序讀取這些內容。然後建立一個始終最後載入的站點,以捕獲任何不匹配的虛擬主機並返回 404,而不是載入預設站點。

99-catchall-httpd.conf

<VirtualHost *:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost *:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

請務必將連接埠替換為 httpd 偵聽的任何連接埠。或者,如果您有 httpd 偵聽特定接口,則需要為每個接口添加一個包羅萬象的內容,如下所示:

<VirtualHost 192.168.1.101:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>
<VirtualHost 192.168.1.101:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8080>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

<VirtualHost 192.168.1.102:8443>
 ServerName null
 ServerAlias *
 Redirect 404 /
</VirtualHost>

希望這可以幫助。我使用此方法按照我指定的順序加載站點,並防止不匹配的虛擬主機無意中加載意外的站點。

答案3

如前所述Moritz Both,如果 Apache2 與您要求的虛擬主機不匹配,則 Apache2 將使用它找到的第一個虛擬主機。

當你第一次安裝Apache2時,有一個預設的網站conf,你可以將其用作模板,修改或刪除,我一直想知道000-default.conf實際上是做什麼用的,因為他們也有一個default .conf。讀完Moritz Both上述內容後,現在一切都更有意義了。

我為我的伺服器所做的是將預設主機名稱(網站)的配置複製到 000-default.conf 檔案和a2ensite 000-default.

現在,每次對我的網站有不匹配的網域請求時,它都會提供 000-預設頁面,這只是我實際預設頁面的副本。

相關內容