我有个问题。
如果我创建一个指向 Apache2 服务器的 A 记录,并创建一些带有子域的虚拟主机。然后我可以访问子域而不做另一条记录吗?
答案1
您似乎混淆了 DNS A 记录和 Apache VirtualHosts。它们在完全不同的层面上运作,并且不能真正互换。
对于 Apache,当您指定一个节时,您就告诉 apache 在收到对该节中<VirtualHost>
任何 s 的请求时要做什么。ServerName
然而,除非这些名称在 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 记录到向您的服务器询问该域。
答案2
不可以。您需要另一个指向相同(或不同)IP 地址的 A 记录或指向您现有域的 CNAME 记录。