我的目标是使用 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 的 CNAME => username.github.io 和裸域的 A 记录 => 我的具有上述配置的服务器之一。
答案1
无需使用支持 DNS ALIAS 记录类型(或 ANAME - 均不是公认的标准)的第三方 DNS 主机
这句话毫无意义。在上述两种情况下,ALIAS 和 ANAME 自定义 DNS 类型都会在内部解析为 A 记录池。因此,从最终用户的角度来看,您没有违反任何标准。任何尝试连接到您使用 ALIAS 配置的主机名的客户端(我可以代表 DNSimple 发言,因为我为他们工作)都将返回与返回目标主机名相同的 A 记录列表。
但在这种特殊情况下,我无法将裸域名 CNAME 为 username.github.io。
理论上可以,但实际上你不想。根据 RFC,CNAME 不能与任何其他记录类型共存。这意味着,如果您对根域进行 CNAME,您将隐藏与根域关联的任何其他记录,这基本上会破坏您的根域解析能力。
如果我使用 Apache 或 Nginx 执行此操作以使 www.example.com 作为 GitHub 页面运行,它会起作用吗?我会破坏电子邮件之类的东西吗?
www.example.com
只要您不需要将任何其他 DNS 记录附加到该主机名,您就可以将其配置为 CNAME。这通常没问题。
从 Web 服务器配置中您无需执行任何操作。如果您将其配置www.example.com
为 的 CNAME username.github.io
,则任何对 的请求www.example.com
都将解析为与 关联的 IP,username.github.io
并且 GitHub Web 服务器将处理该请求。
不过,在这种情况下,您还没有解决要对根域做什么的问题。此时,您唯一能做的就是将根域 HTTP 重定向到主机www.example.com
名。
您提到的配置片段将以那种方式工作。