主机文件中 .local 的查找时间较长

主机文件中 .local 的查找时间较长

我正在使用 Mac OS X 10.8.2,并且我的本地 /etc/hosts 中有以下内容:

127.0.0.1 dev.test.local

与此同时,我在本地安装了 nginx 来为该域提供静态文件。虽然它可以工作,但 nginx 需要大约 5 秒钟才能获得连接。演示如下:

ba@djuproera% time curl -I http://dev.test.local/  
curl: (7) couldn't connect to host
curl -I http://dev.test.local/  0.00s user 0.00s system 0% cpu 5.010 total

我注意到的是,如果我将我的主机文件更改为以下内容:

127.0.0.1 dev.test.com dev.test.local

我得到了正常的亚秒级响应:

ba@djuproera[master*](ruby-1.9.3)% time curl -I http://dev.test.local/
curl: (7) couldn't connect to host
curl -I http://dev.test.local/  0.00s user 0.00s system 2% cpu 0.285 total

更加有趣的是,如果我切换 hosts 文件中域的顺序,我会再次收到缓慢的响应:

127.0.0.1 dev.test.local dev.test.com

给出:

ba@djuproera[master*](ruby-1.9.3)% time curl -I http://dev.test.local/
curl: (7) couldn't connect to host
curl -I http://dev.test.local/  0.01s user 0.00s system 0% cpu 5.011 total

有人知道这里发生了什么事吗?

答案1

问题似乎与使用.local有关:

All .local domains are technically reserved for Multicast DNS (Bonjour), 
and Lion no longer looks in /etc/hosts first when you try to lookup 
a .local domain. Instead, it asks MDNS first, waits out the 5 second 
timeout, then checks /etc/hosts.

来源:http://itand.me/mac-os-x-lion-local-domains-and-etchosts-oh-m

有趣的是,如果第一个主机首先使用另一个 TLD 来创建,那么定义两个不同的域名如何使其工作。

相关内容