Nginx动态域名解析理解
【摘要】 1.背景:proxy_pass 中如果配置的是域名地址,Nginx 只有在 start / restart / reload 时,才会连接一次域名服务器解析域名,缓存解析的结果,后续则不会根据解析结果的 TTL 进行自动更新”,如果遇到了域名地址配置有多个 IP ,且还在动态变化,那就会出现 Nginx 把请求转发到一个过期的 IP 地址的情况,产生连接超时的报错信息。upstream t...
1.背景:
proxy_pass 中如果配置的是域名地址,Nginx 只有在 start / restart / reload 时,才会连接一次域名服务器解析域名,缓存解析的结果,后续则不会根据解析结果的 TTL 进行自动更新”,如果遇到了域名地址配置有多个 IP ,且还在动态变化,那就会出现 Nginx 把请求转发到一个过期的 IP 地址的情况,产生连接超时的报错信息。
upstream test-interface {
server abc.test.cn;
}
server {
listen 12345;
server_name localhost;
location / {
proxy_pass http://test-interface;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
2.核心思想:
NGINX自身充当dns的客户端进行动态dns解析。
3.解决方案:
动态域名解析是通过resolver指令和变量来实现的。指令resolve可以在http范围内全局设定,也可以在某一个server甚至某一个location里面单独设定。
如下配置,当访问服务器的根目录时,会把请求转移到test变量定义的服务器中。而且,这个test变量定义的服务器abc.test.cn会通过resolver 定义的dns 服务器进行动态解析。
在此配置中,通过resolver得到的解析结果有效期是10秒。有效期过后,再次访问根目录时就会对域名进行重新解析。
需要注意的是,如果proxy_pass后面是一个域名而不是一个变量,那么对域名的解析也是发生在启动解析期间,无法完成动态域名解析的功能。
注:不是说 Nginx 每过 10 秒会自己重新调一次 DNS 解析,而是有请求转发时才检验一次有效期是否过期。
http {
server {
listen 12345;
resolver 8.8.8.8 valid=10s;
set $test abc.test.cn;
location / {
proxy_pass http://$test;
}
}
}
指令resolver的配置语法是:
resolver 114.114.114.114 8.8.8.8 valid=10s ipv6=off;
参数说明:
resolver 可以在http全局设定,也可在server里面设定
resolver 后面指定DNS服务器,可以指定多个,空格隔开
valid设置DNS缓存失效时间,自己根据情况判断,建议600以上
resolver_timeout 指定解析域名时,DNS服务器的超时时间,建议3秒左右
DNS域名服务器:
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址
(IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址
(IP address)的表,以解析消息的域名。
详情见计算机网络文章:[https://blog.csdn.net/qq_37534947/article/details/120399336?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166649505816782391855445%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166649505816782391855445&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-120399336-null-null.article_score_rank_blog&utm_term=%E8%AE%A1%E7%AE%97%E6%9C%BA&spm=1018.2226.3001.4450](https://blog.csdn.net/qq_37534947/article/details/120399336?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166649505816782391855445%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=166649505816782391855445&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-120399336-null-null.article_score_rank_blog&utm_term=%E8%AE%A1%E7%AE%97%E6%9C%BA&spm=1018.2226.3001.4450)
参考链接:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)