动态域名解析的域名解析
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站一种服务。域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
英文名:DNSR(domainnamesystemresolution)
在域名注册商那里注册了域名之后如何才能看到自己的网站内容,用一个专业术语就叫“域名解析”。
在相关术语解释中已经介绍,域名和网址并不是一回事,域名注册好之后,只说明你对这个域名拥有了使用权,如果不进行域名解析,那么这个域名就不能发挥它的作用,经过解析的域名可以用来作为电子邮箱的后缀,也可以用来作为网址访问自己的网站,因此域名投入使用的必备环节是“域名解析”。
域名解析
我们知道域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程。一个域名对应一个IP地址,一个IP地址可以对应多个域名;所以多个域名可以同时被解析到一个IP地址。域名解析需要由专门的域名解析服务器(DNS)来完成。
解析过程,比如,一个域名为:com,是想看到这个现HTTP服务,如果要访问网站,就要进行解析,首先在域名注册商那里通过专门的DNS服务器解析到一个WEB服务器的一个固定IP上:2112141,然后,通过WEB服务器来接收这个域名,把com这个域名映射到这台服务器上。那么,输入com这个域名就可以实现访问网站内容了即实现了域名解析的全过程;
人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。
域名解析协议(DNS)用来把便于人们记忆的主机域名和电子邮件地址映射为计算机易于识别的IP地址。DNS是一种c/s的结构,客户机就是用户用于查找一个名字对应的地址,而服务器通常用于为别人提供查询服务。
一、动态DNS是什么?
动态DNS英文全称Dynamic Domain Name Server,简称为“DDNS”,中文含义是指动态域名服务。很多路由器管理界面或者智能路由器设置中心,都可以找到DDNS(动态DNS)功能。
动态DDN(DDS)就是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
二、路由器动态DNS作用
无线路由器连接宽带上网后,路由器会从宽带运营商那里获取一个IP地址,这个IP地址可以在路由器的“上网设置”或者“WAN口状态”选项处查看到,如下图所示。
但是,从运营商处获取的这个IP地址并不是固定的,会经常发生变化。当路由器重启、或者断电后,再次连接宽带上网时,路由器WAN口的IP地址通常就变了。
路由器中的动态DNS的作用,就是用来解决路由器WAN口IP地址经常变化这个问题的。成功设置动态DNS后,可以用一个域名来访问路由器了,不管路由器WAN口IP地址如何变化,都可以一直使用该域名来远程访问路由器。
三、路由器动态DDNS设置方法
不同的无线路由器,设置动态DNS(DDNS)的方法有一些差异。下面本文以新版TP-Link无线路由器为例,教大家如何设置动态DNS。
1、首先在电脑浏览器中输入你自己路由器的设置网址,然后输入“管理员密码”,登录到路由器的设置管理中心页面,如下图所示。
注意问题:路由器的设置网址,可以在该路由器底部铭牌中查看到,如图所示。
2、进入路由器设置界面后,首先点击“应用管理”选项,然后在上方页面中,找到“DDNS”选项,并点击打开,如图所示。
3、然后在“服务提供者”建议选择:花生壳——>然后点击“注册新账号”,如图所示。
4、填写花生壳账号的注册信息,这里大家自己进行注册就是了,没什么好说的,如图。
5、注册成功后,花生壳会免费给你提供一个域名,如下图所示,请记录、保存好这个域名。
6、然后回到路由器动态DNS的设置页面,使用刚才注册的账号和密码,进行登录,如下图所示。
7、如果“登录状态”后面显示:登录成功,说明路由器的动态DNS设置成功了。在“域名信息”选项后面,同样可以看到花生壳提供的免费域名。
四、路由器动态DNS使用方法
当你需要远程访问路由器的时候,就不需要在使用路由器WAN口的IP地址来进行访问了,只需要使用刚才花生壳提供的域名就可以访问的。本例演示中,可以直接在浏览器中打开网址:1h68c21202iokla访问路由器。
原文链接:
https://priesttombgithubio/%E6%8A%80%E6%9C%AF/2020/05/17/nginx-cached-dns-server-resolvered-answer/
接 上篇文章 中提到的 Nginx 解析域名地址的问题,用一句话描述就是“proxy_pass 中如果配置的是域名地址,Nginx 只有在 start / restart / reload 时,才会连接一次域名服务器解析域名,缓存解析的结果,后续则 不会根据解析结果的 TTL 进行自动更新 ”,如果遇到了域名地址配置有多个 IP ,且还在动态变化,那就会出现 Nginx 把请求转发到一个过期的 IP 地址的情况,连接超时的报错日志类似这样:
这个说法在 官方的一篇 2016 年的博客 中有提到:
除此之外,除了一些分析源码的网络文章,暂时还没有找到其他的官方文档中说到这个细节
在 upstream 中可以对上游的服务器进行更详细的设置,解决 DNS 缓存的问题可以在 upstream 中指定需要的负载均衡算法,比如 least_conn ,并指定 max_fails ,以实现调用失败 N 次之后判定该服务异常,暂停转发该服务
注:
这个配置的示例是官方博客中的,看到这个配置时觉得有点奇怪,自己进行了模拟测试,测试的方案是在 hosts 文件中配置一个模拟的域名与三个 IP 地址,其中两个 IP 是正确的,另一个是内网不存在的 IP,测试的结果就是 Nginx 始终会将请求转发到那个错误的 IP 去,日志中一直能看到超时的报错,配置的 max_fails 仿佛没有任何作用(有补充配置了 fail_timeout ,也尝试配置了 proxy_next_upstream 、 proxy_next_upstream_timeout 和 proxy_next_upstream_tries )
不清楚用 hosts 配置的方式是不是必然会出现这样的情况,因为目前没条件测试真正想要的场景,所以不敢说博客中的这种配置是错的如果以后碰巧有条件能测试验证,再回头来更新
最初学习 Nginx 的时候测试过 max_fails 这个配置,当时在 upstream 里配置的都是一些 IP 地址的上游服务。再次按 IP 地址进行测试,在 upstream 中配置两个正确的 IP 地址 和一个错误的 IP 地址,发现这样的配置就是能生效的,失败一定次数之后(实际失败的次数比设置的 max_fails 多,不清楚什么原因),Nginx 在 fail_timeout 时间内就不再转发请求到那个错误的 IP
resolver 的配置详情可看 官方文档 ,示例的配置是指定 DNS 服务器 10002,指定 DNS 解析的有效时间为 10 秒,按博客 《Nginx动态解析upstream域名》 中博主的测试,不是说 Nginx 每过 10 秒会自己重新调一次 DNS 解析,而是有请求转发时才检验一次有效期是否过期
不配置 valid 选项时,V119 之后的 Nginx 默认会使用 DNS 解析结果中的 TTL
在 proxy_pass 中使用变量,带来的作用就是在 TTL 过期时能再次调用 DNS 解析,从而解决一直使用缓存结果的问题
这大概是目前官方原版唯一解决 DNS 缓存的解决方案了,带来的弊端也如 《Nginx动态解析upstream域名》 的博主所说,不能使用 upstream 模块特有的相关配置
Nginx Plus 版有更好的配置解决这些问题,另外使用 Lua 插件或许也能更完美的解决这个问题,暂时就没什么研究了
0条评论