nginx/apache 中的别名与 CNAME 记录?

nginx/apache 中的别名与 CNAME 记录?

在我的一个 nginxsites-available配置文件中,我可以指定服务器名称别名,如下所示:

server_name example.com www.example.com;

如果我有一个 Apache 服务器,我可以使用ServerName和做类似的事情ServerAlias

ServerName example.com
ServerAlias www.example.com

CNAME我还在区域文件中指定了一条记录:

www.example.com. 1800 IN CNAME example.com.

我希望www.example.comexample.com服务器提供相同的内容。由于我有CNAME记录,所以无论如何www.example.com都会指向所有example.com内容,因此不需要别名。该论点也可以反过来说CNAME不需要记录。

我的 Web 服务器(nginx 或 Apache)中的别名和 CNAME 记录是否冗余?如果是的话,我是否应该除掉其中一个?如果是的话,除掉哪一个?

答案1

如果没有 CNAME,您将需要 www-subdomain 的 A 记录,否则 DNS 解析将www.example.com不起作用,并且请求将无法到达您的服务器。

您还需要ServerAlias,因为即使使用 CNAME,HTTP 请求中的主机标头也不会改变,因此它仍然会改变,www.example.com您需要告诉 Apache/nginx 哪个 vhost 应该服务于该请求。

所以这里没有多余的东西。使用 CNAMEwww.example.com而不是 A 记录的唯一优点是,当您的 IP 发生变化时,您只需更改 的 A 记录example.com。使用 A 记录时,您必须同时更改它们。

相关内容