我对设置服务器有疑问。
假设我有多个网站需要托管。
foo.com
bar.com
hello.com
我可能有或没有专门为他们设置服务器。假设任意配置如下(使用相应的域名注册商)
foo.com A 1.1.1.1
bar.com A 1.1.1.2
hello.com A 1.1.1.1
我希望为每个网站提供一个通用域名而不是 IP(因为 IP 可以改变)。
类似下面的内容。
foo.com CNAME service.com
bar.com CNAME service.com
hello.com CNAME service.com
据我目前对 DNS 的了解,
查询
- 我想我需要在 service.com 设置一个 DNS 服务器来返回适当的记录。
- 它是否正确?
- 如果是的话,如果域名由域名注册商持有怎么办?例如 dreamhost。那么如何处理?
- 因为它们会响应 DNS 查询,所以我该如何插入该间接层呢?
从客户端角度实现透明的服务器迁移
最终我想要实现的是,如果有一天我要从不同的服务器托管 hello.com,我只需要在服务器上的 1 个地方进行修改,而不是告诉客户端更改他们的 DNS 配置。
附加信息:
我使用 rackspace,他们还有一种称为反向 DNS 的东西。这有用吗?
我注意到对于 google Apps - 我们总是指向 ghs.google.com,它们将请求转发到适当的 IP。所以这一定是可能的,但我就是不知道如何实现它。
答案1
您需要为每个网站设置单独的 cname。例如:
foot.com CNAME foo.com.service.com
bar.com CNAME bar.com.service.com
hello.com CNAME hello.com.service.com
答案2
为您拥有的域设置 DNS
在 Dreamhost 上,确保名称服务器设置为 Dreamhost 名称服务器(默认情况下应该是这样)。然后用它们设置 DNS(应该有一个控制面板来设置域的 DNS 记录)。
一些信息
CNAME 仅指向主机名;这些主机名必须配置 IP 地址(即,必须具有将其指向 IP 的 A 记录)。
如果您有几个主机名需要映射到同一个 IP,那么可以更轻松地设置一个主机名(A)指向该 IP,然后将所有其他主机名 CNAME 到该主机名(A)。
如果您有几个主机名需要指向不同的 IP,那么 CNAME 就没什么用了。
假设您有 foo.com、bar.com、hello.com 和 service.com,并且您想将它们全部指向同一 IP(注意 @ceejayoz 关于根域和 CNAMES 的评论)。您需要设置一个 A 记录以将主机名(例如 service.com)指向 IP,然后为 www.bar.com、www.foo.com 和 www.hello.com 设置 CNAME 以指向 service.com。
这将要求您有权访问 foo.com、bar.com、hello.com 和 service.com 的 DNS 记录(因此,如果您已使用 Dreamhost 注册了所有这些域名,则需要将它们全部配置为使用 Dreamhost 名称服务器,然后为每个域名设置 DNS 记录。
对你的问题的具体回答
不过,您提到过,您希望能够修改一个域的 IP 地址而不影响另一个域;在这种情况下,您需要为每个域名设置一个 CNAME。或者,您可以使用反向代理(尽管这会增加额外的复杂性)。使用反向代理,您可以让所有域使用相同的 IP,无论它们位于哪个服务器上(反向代理将根据请求的域将请求转发到正确的服务器上)。这可能是 Google Apps 正在做的事情。
反向 DNS 对此没有帮助,但很有用(尤其是对于电子邮件传递)。我现在不想深入讨论,但你应该读一读!
答案3
请记住,您不能将 CNAME 用于“example.com”等二级域名,因为它们必须具有 SOA RR。
答案4
每个服务器都需要一个 A 记录。(使用标准文档数据。)
host1.example.com. A 192.0.32.11
host2.example.com. A 192.0.32.12
然后,您可以使用 CNAME 记录将服务器指向适当的服务器。我根据您的地址拆分主机。
www.foo.com. CNAME host1.example.com.
www.bar.com. CNAME host2.example.com.
www.hello.com. CNAME host1.example.com.
在您的服务器上,使用 Web 服务器中的虚拟主机定义来定义可用的网站。定义未使用的虚拟主机不会产生重大损失,因此您可以在多台服务器上设置网站,但只为其中一台服务器提供 DNS 记录。
如果您要处理像 foo.com 这样需要多个 DNS 记录的域名,则需要使用 A 记录。有几种方法可以做到这一点。拥有一个与为域名提供服务的主机具有相同地址的 A 记录。
foo.com A 192.0.32.11
bar.com A 192.0.32.12
hello.com A 192.0.32.11
另一种方法是使用服务器将域名重定向到其www
子域名。这可以与上面的一个或多个主机相同。
foo.com. A 192.0.32.5
bar.com. A 192.0.32.5
hello.com. A 192.0.32.5
认真考虑为 foo.bar 等域名设置 MX 记录。还请考虑为域名的两个版本设置 SPF。如果您的邮件服务器是,mail.example.net
这些记录应该可以工作(SPF 记录是可选的,可能不被旧 DNS 服务器接受。):
foo.bar. MX 10 mail.example.net.
foo.bar. TXT 'v=spf1 mx -all'
foo.bar. SPF 'v=spf1 mx -all'
www.foo.bar. TXT 'v=spf1 -all'
www.foo.bar. SPF 'v=spf1 -all'
上述 SPF 记录表明,只有 MX 会为域发送电子邮件foo.bar
,任何邮件都不应包含域www.foo.bar
。对于不会发送电子邮件的域,请从 TXT 和 SPF 记录中删除 mx。请参阅http://www.openspf.org或者我的文章防晒指数了解更多详情。
请记住,域数据是缓存的。移动静态网站时,请将网站保留在旧主机上,直到流量停止到达。移动包含动态内容的网站更加困难。