在我的一个 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.com
和example.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 记录时,您必须同时更改它们。