我的目标是使用 GitHub Pages 并从他们的 CDN 中受益,而不必使用支持 DNS ALIAS 记录类型(或 ANAME - 都不是公认的标准)的第三方 DNS 主机。我想知道他们是怎么做到的,有人能解释一下吗?
我们在这里有很多关于 CNAME 记录的 DNS 别名的问题,但在这种特殊情况下,我无法将裸域 CNAME 到username.github.io
.
如果我使用 Apache 或 Nginx 来让 www.example.com 作为 GitHub 页面工作,它会起作用吗?我会破坏电子邮件之类的东西吗?
阿帕奇
<VirtualHost *:80>
ServerName example.com
Redirect 301 / http://username.github.io/
</VirtualHost>
Nginx
server {
server_name example.com;
return 301 http://username.github.io/;
}
以上假设 www => username.github.io 的 CNAME 和裸域的 A 记录 => 我的具有上述配置的服务器之一。
这句话毫无意义。在上述两种情况下,ALIAS 和 ANAME 自定义 DNS 类型都在内部解析为 A 记录池。因此,从最终用户的角度来看,您并没有违反任何标准。任何尝试连接到您使用 ALIAS 配置的主机名的客户端(我可以代表 DNSimple,因为我正在为他们工作)将返回与返回目标主机名的 A 记录相同的列表。
理论上你可以,实际上你不想。根据 RFC,CNAME 不能与任何其他记录类型共存。这意味着如果您对根域进行 CNAME,您将隐藏与根域关联的任何其他记录,这基本上会破坏您的根域解析能力。
www.example.com
只要您不需要附加到该主机名的任何其他 DNS 记录,您就可以配置为 CNAME。这通常没问题。从 Web 服务器配置中,您无需执行任何操作。如果您配置
www.example.com
为 的 CNAMEusername.github.io
,任何对的请求都www.example.com
将解析为关联的 IP,username.github.io
并且 GitHub Web 服务器将处理该请求。尽管如此,在这种情况下,您还没有解决要对根域做什么的问题。此时,您唯一能做的就是将根域 HTTP 重定向到
www.example.com
主机名。您提到的配置片段将以这种方式工作。