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

day*_*oli 3 configuration nginx alias cname-record apache-2.2

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

server_name example.com www.example.com;
Run Code Online (Sandbox Code Playgroud)

如果我有一个 Apache 服务器,我可以使用ServerName和执行类似的操作ServerAlias

ServerName example.com
ServerAlias www.example.com
Run Code Online (Sandbox Code Playgroud)

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

www.example.com. 1800 IN CNAME example.com.
Run Code Online (Sandbox Code Playgroud)

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

我的 Web 服务器(nginx 或 Apache)中的别名和 CNAME 记录是否多余?如果是这样,我应该摆脱其中一个吗?如果有,是哪一个?

eta*_*klo 5

如果没有 CNAME,您将需要 www 子域的 A 记录,否则 DNS 解析将www.example.com无法工作,请求将无法到达您的服务器。

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

所以这里没有什么多余的。使用 CNAMEwww.example.com代替 A 记录的唯一优点是,当您的 IP 更改时,您只需更改 的 A 记录example.com。使用 A 记录时,您必须更改它们。