曾经有人问我这样一个问题,同样的域名(比如:www.myfreax.com),欧洲一台Nginx服务器,中国一台Nginx服务器,怎么样使来自欧洲的客户端访问的是欧洲的服务器,中国则访问中国的,在应用层解决实在想不出来怎么解决,但可以网络层可以解决这个问题,即通过DNS来判断不同地区来源解释成指定地区的IP地址来解决此问题

基本原理

regional-smart-line-load
当客户端发起请求时,首先第一步就是由DNS服务把网址解释www主机的IP地址,DNS服务器把网址解释成IP地址后返回给客户端,客户端再根据解释后的IP向www服务器请求资源,从图中可以看到DNS根据不同地区返回不同地区www服务器的IP地址,这得益于EDNS(edns-client-subnet)机制,这种机制是由Google提出,现在外国的DNS提供商都支持这个,国内死贵云也支持,只需在DNS服务器上或者到DNS提供商设置一下即可

设置

针对不同线路来源设置不同的A记录或者Cname记录即可

其实这个和DNS负载均衡类似,DNS负载均衡是随机分发IP,而上面是针对来源分发IP

Thank

感谢胖子