先决条件
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记录。
最终配置
加入A和CNAME记录后,您的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以下教程:
后记
- 要了解更多关于“点”的问题,在这里看到: http://www.dns-sd.org/TrailingDotsInDomainNames.html
- 感谢用户“Pablo的vDevices”指向我的方向正确。
- 本教程的作者是阿萨夫·戈登( assafgordon@gmail.com )