CNAME、A 和 Apache - 为什么一个可以工作而另一个不工作?

CNAME、A 和 Apache - 为什么一个可以工作而另一个不工作?

我有一个网站,example.tld。DNS 有一个指向 1.2.3.4 的 example.tld A 记录。

就 Apache 而言/配置而言,子域名(www.example.tld)是 1.2.3.4 的 A 记录还是 example.tld 的 CNAME,是否存在区别?

据我所知,IP 解析方式与实际的 HTTP 请求是分开的,那么 Apache 如何区分两者,以及为什么/何时这很重要?

我无法显示 Apache 配置,但假设它在一种情况下运行良好,但在另一种情况下则不然。

编辑:我负责 DNS 方面,我有一个客户,他说他们的托管服务提供商坚持认为他们的子域名(www.example.tld)将不起作用,除非将子域名定义为 CNAME(而不是 A / 主机记录)。我不明白这有什么关系,因为所有内容都解析为同一个 IP,但我不知道 Apache,所以这个规则有没有什么边缘情况、例外情况?

客户被困在两边,只能说对方错了。如果我错了,我想了解原因(再次重申,我不了解 Apache),这样我就不会再犯同样的错误。

答案1

Apache 看不到任何差异,但在 Apache 中运行的 Web 应用程序可能会看到差异。我知道我工作的公司运行的 Web 应用程序在您配置帐户时会发出 DNS 请求并希望看到 CNAME。

如果您的客户被告知它必须是 CNAME,那么这可能是原因。

答案2

Apache 甚至不会读取此 DNS 条目。只有客户端。
当客户端向 Web 服务器发出请求时,它会发送包含所需网站名称的请求。当 Web 服务器收到该请求时,它只需读取所需网站的名称即可知道要发送回什么。

您甚至可以配置 Apache 来为虚拟的 facebook.com 提供服务。
您可以修改客户端 dns,将 facebook.com 指向您的服务器,这是您的 apache,它将响应您的浏览器。即使您的 Web 服务器 dns 没有被欺骗,因为 Web 服务器从不要求提供此类信息。

相关内容