Apache-Httpd

Apache2 和域控制

  • July 21, 2019

我有個問題。

如果我創建一個指向 Apache2 伺服器的 A 記錄,並創建一些帶有子域的虛擬主機。然後我可以在不創建其他記錄的情況下訪問子域嗎?

您似乎混淆了 DNS A 記錄和 Apache VirtualHosts。它們在完全不同的層面上運作,並且不能真正互換。

對於 Apache,當您指定一個<VirtualHost>節時,您告訴 apache 在收到ServerName對該節中任何 s 的請求時要做什麼。但是,除非這些名稱在 DNS 中指向您的伺服器,否則外界不會向您的伺服器詢問它們,因此您需要兩者。

(是的,我知道我在這裡跳過了萬用字元,我試圖讓那些在 DNS 和虛擬主機方面明顯是新手的人直截了當)

舉個例子:假設你有一條 A 記錄指向www.foo.com你的伺服器1.2.3.4。你有以下VirtualHost節:

<VirtualHost *:80>
   ServerName www.foo.com
   DocumentRoot /var/www/html
   -- etcetera ---
</VirtualHost>

這會告訴您的 apache 伺服器,應根據該節中的說明處理埠 80 上請求 www.foo.com 的任何联係人。

現在假設您添加一個子域:

<VirtualHost *:80>
   ServerName sub.foo.com
   ServerAlias sub2.foo.com

   DocumentRoot /var/www/subdomain/html
   --- etc ---
</VirtualHost>

您現在已經告訴您的 apache 伺服器如何響應sub.foo.com對和的請求sub2.foo.com。但是,除非您添加指向sub.foo.com沒有1.2.3.4人會知道您的伺服器詢問該域的 A 記錄。

引用自:https://unix.stackexchange.com/questions/530907