如何使用DigitalOcean的DNS面板设置和测试DNS子域

先决条件

DigitalOcean的DNS面板允许您轻松设置多个子域(例如foo.bar.myserver.com)。

三个重要指南:

  • 当进入一个子部分(比如只是foo.myserver.com的 ),不进入在最后一个点。

  • 当进入一个完全合格的域名(例如foo.myserver.com), 在末尾添加一个点。

  • DNS信息需要时间传播(有时从几分钟到几小时) - 在测试更改前等待几分钟。 如果您的更改尚未传播,请稍后重试。

本教程假定您遵循了基本的DNS设置教程 ,并有以下几点:

  • 使用域名注册商的注册域名(如myserver.com)。
  • 活动Droplet,具有公共IP地址(例如1.2.3.4)。
  • 已配置的域名在数字海洋DNS控制面板
  • 数字海洋DNS控制面板中配置的通配符CNAME记录(可选)。

要测试上述设置,您应该能够ping服务器:

$ ping myserver.com
PING myserver.com (1.2.3.4) 56(84) bytes of data.
64 bytes from myserver.com (1.2.3.4): icmp_seq=1 ttl=64 time=0.168 ms
...

如果您已配置通配符CNAME记录,则使用myserver.com的任何子域也应该可以工作:

$ ping FOO.myserver.com
PING myserver.com (1.2.3.4) 56(84) bytes of data.
64 bytes from myserver.com (1.2.3.4): icmp_seq=1 ttl=64 time=0.168 ms
...

所需的设置

  • 您有多个Droplet,每个具有不同的IP:

    • WebDropLet上1.2.3.4
    • ApiDropLet上5.6.7.8
  • 每个Droplet具有不同的目的:

    • WebDroplet是一个512MB / 1CPU的Droplet,提供简单,静态的网页。
    • ApiDroplet是4GB / 2CPU的中Droplet,提供API请求(或做其他密集操作)。
  • 需要以下域命名:

    • myserver.com指向WebDroplet(1.2.3.4)
    • www.myserver.com点WebDroplet(1.2.3.4)
    • * .myserver.com指向WebDroplet(1.2.3.4)(即任何其他子域,包括用户打字错误)

除了 “api.myserver.com”指向ApiDroplet(5.6.7.8)“* .api.myserver.com点ApiDroplet(5.6.7.8)”(即在任何api.myserver.com子子域)。

DNS设置

当前设置

在DigitalOcean控制面板,单击DNS
将显示以下信息(您的IP地址,域名和Droplets将不同):

点击查看 (旁边的“myserver.com”域名的放大镜),以查看域记录:

添加新的A记录

点击添加记录 ,选择一条记录,进入“API”(或您指定的子域名)和(在下面的例子中5.6.7.8)的Droplet的IP地址:

注:有名字的API

单击Create添加新的DNS记录。 您的记录将如下所示:

添加新的CNAME记录

点击添加记录 ,请再次选择CNAME,输入“.API”(或您指定的子域名)和你的Droplet的完全限定域名(api.myserver.com *在下面的例子。):

注意:是经过“.api`” -有*是完全合格的域名后点(api.myserver.com。)

单击Create添加新的DNS记录。

最终配置

加入ACNAME记录后,您的DNS设置应该像这样(用不同的名称和IP地址):

区域文件

在DigitalOcean域记录之下,显示ZONE FILE信息:

$TTL    1800
@       IN  SOA NS1.DIGITALOCEAN.COM.   hostmaster.myserver.com. (
            1383769599 ; last update: 2013-11-06 20:26:39 UTC
            3600 ; refresh
            900 ; retry
            1209600 ; expire
            1800 ; ttl
            )
             IN      NS      NS1.DIGITALOCEAN.COM.
                     NS      NS2.DIGITALOCEAN.COM.
                     NS      NS3.DIGITALOCEAN.COM.
@   IN A    1.2.3.4
api IN A    5.6.7.8
*   CNAME   @
*.api   CNAME   api.myserver.com.

笔记:

  • ZONE文件表示DigitalOcean的DNS服务器中的实际配置。
  • 新的域记录(例如“A”和“CNAME”记录)传播到ZONE文件最多可能需要几个小时。
  • 添加/删除域记录后,请等待新记录显示在ZONE文件部分。 直到它们出现,没有点测试新配置。
  • 重新载入网页,直到您的更改出现。

测试新配置

注:在变化出现在区域文件不测试新配置。 即使它们出现在ZONE文件中,它可能需要几分钟,直到更改传播到互联网上的其他域服务器。 耐心一点!

直接使用DigitalOcean的Nameservers进行测试

使用linux host命令直接查询DigitalOcean的Nameservers。

直接测试服务器的原因是,您的新记录可能尚未传播到其他Nameservers。
为“主机”的第二个参数是ns1.digitalocean.com -讲述的“主机”查询特定的Nameservers,而不是默认的服务器(默认服务器可能是你的ISP的域名服务器)。

原始域名(没有新的子域名)应该工作:

$ host   myserver.com   ns1.digitalocean.com
Using domain server:
Name: ns1.digitalocean.com
Address: 198.199.120.125#53
Aliases: 

myserver.com has address 1.2.3.4

子域应该工作以及(由于通配符CNAME记录):

$ host   foo.myserver.com   ns1.digitalocean.com
Using domain server:
Name: ns1.digitalocean.com
Address: 198.199.120.125#53
Aliases: 

foo.myserver.com is an alias for myserver.com.

新的api子应指向新的IP地址:

$ host   api.myserver.com   ns1.digitalocean.com
Using domain server:
Name: ns1.digitalocean.com
Address: 198.199.120.125#53
Aliases: 

myserver.com has address 5.6.7.8

注意:如果仍然为1.2.3.4新的API子,继续等待,然后再次测试。 如果它仍然不显示新的IP,请检查您的配置。

新的子子域(例如foo.api.myserver.com)应显示新的别名:

$ host   foo.api.myserver.com   ns1.digitalocean.com
Using domain server:
Name: ns1.digitalocean.com
Address: 198.199.120.125#53
Aliases: 

foo.api.myserver.com is an alias for api.myserver.com.

测试您的ISP的Nameservers

在DigitalOcean的服务器上验证您的DNS记录后,测试传播到Internet上的其他Nameservers。
仅使用一个参数(查询的主机名)运行“主机”使用默认Nameservers:

$ host myserver.com
myserver.com has address 1.2.3.4
$ host foo.myserver.com
foo.myserver.com is an alias for myserver.com.
myserver.com has address 1.2.3.4

测试新的“api”子域名:

$ host api.myserver.com
myserver.com has address 5.6.7.8
$ host foo.api.myserver.com
foo.api.myserver.com is an alias for api.myserver.com.
api.myserver.com has address 5.6.7.8

注1:如果你查询时DigitalOcean的Nameservers,但不使用默认的Nameservers时,正确的(新)IP -这意味着新记录尚未传播到Nameservers的其余部分(有时使用缓存以减少网络流量)。 这取决于各种因素,您可能需要等待一段时间才能在默认Nameservers上可用。

注2:您的ISP可能会使用多个名称的服务器负载平衡,其中有些人可能会得到比别人更早更新。 这可能导致令人沮丧的情况,其中相同的查询返回不同的结果,例如:

# Updated name-servers return updated result
$ host api.myserver.com
api.myserver.com has address 5.6.7.8
# running host again, might use different name-servers,
# which return old,stale result
$ host api.myserver.com
api.myserver.com has address 1.2.3.4
$ host api.myserver.com
api.myserver.com has address 1.2.3.4
$ host api.myserver.com
api.myserver.com has address 5.6.7.8

如果发生这种情况,请等待几分钟以使所有Nameservers更新。

接触到新服务器

注意:默认Nameservers已经更新 ,“平”,“SSH”,以及Web访问才起作用。 在使用“ping”测试之前,始终使用“主机”进行测试(见上节)。

Ping新的子域应该到达新的Droplet:

$ ping api.myserver.com
PING api.myserver.com (5.6.7.8) 56(84) bytes of data.
64 bytes from 5.6.7.8: icmp_seq=1 ttl=48 time=157 ms
...

连接到新服务器(如果启用了SSH):

$ ssh root@api.myserver.com
The authenticity of host 'api.myserver.com (5.6.7.8)' can't be established.
key fingerprint is fb:32:7c:81:7e:6a:33:17:ac:4c:2d:a5:3c:75:07:95.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'api.myserver.com' to the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes
root@api.myserver.com's password: 

测试新Droplet上的Web服务器(如果启用了Web服务器):

$ wget api.myserver.com
--2013-11-06 20:42:42--  http://api.myserver.com/
Resolving api.myserver.com (api.myserver.com)... 5.6.7.8
Connecting to api.myserver.com (api.myserver.com)|5.6.7.8|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13 [text/html]
Saving to: 'index.html'

100%[======================================================>] 13  --.-K/s in 0s

2013-11-06 20:42:43 (702 KB/s) - 'index.html' saved [13/13]

应用程序级配置

配置Nameservers后,您需要配置Web服务器以响应新的主机名。 通配符CNAME记录允许多个主机名(如api.myserver.com,foo.api.myserver.com, www.api.myserver.com ),以达到相同的服务器(所有的决心,IP地址5.6.7.8)。

在Web服务器的说法,处理多个服务器名称叫做虚拟主机

有关配置VirtualHosts以下教程:

后记

提交阿萨夫·戈登
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏