DNS解析在通常意义上就是提供域名到IP地址的映射,例如www.google.com解析到74.125.71.103。这样做至少有两个必要,一是IP地址难以记忆,而域名则好记得多;二是基于Host头部的虚拟主机需要使用域名来识别不同的服务内容。
有些站长在域名解析时会有一些不合理的需求,主要是对DNS理解有误而造成的。如下是一些常见的域名解析误区。
1. 请解析example.com:8080
DNS解析不包含端口,所以在DNS系统里,只能提供example.com到某个IP地址的映射,无法处理后面这个端口。如果你在访问example.com时,想让浏览器自动跳转到8080端口,请配置web服务器的rewrite来实现。
2. 请解析host_a.example.com
这是个无效的域名,域名不能包含下划线,可以是字母、数字、横杠。
有一类域名可以包含下划线(SVR记录),不在讨论范围内。
3. 请解析example-host
这可以是个主机名,但不是有效域名,无法在DNS里进行解析。
请在你的hosts文件里配置。
4. 设置了域名解析后,可以ping通,但网站仍然打不开
这其实也不关DNS的事,很可能是web服务器上的虚拟主机还没开通好。
例如example.com解析到某个主机商的IP,还需要主机商开通针对该域名的虚拟主机才能访问。
5. 在访问www.a.com时,自动跳转到www.b.com
这同样不是域名解析的范畴,请配置web服务器的rewrite来实现。
6. 请解析http://example.com/path/到某个IP地址
这是个完整URL,不是域名,域名只包括example.com这部分。
如果要基于请求路径进行路由,例如/bbs/路由到一个主机,/news/路由到另一个主机,那么请配置web服务器或代理服务器来实现。例如Squid基于请求路径的ACL可以很好的做到这点。
7. example.com解析到A和B两个IP地址,想让A获得更多的访问
DNS轮询是均衡的,没有权重的设置,这个事实上做不到。
有负载均衡功能的软件如LVS、Nginx可以做到。
8. 域名解析要立刻生效
对于标准的DNS系统例如DNSbed,新加的域名是立刻生效的。
变更的域名要多久生效,取决于旧域名的TTL设置。
例如example.com这条域名,之前的TTL是600秒,那么在变更该域名后,最长要等待600秒,才能全局生效。