您的位置:首页 > 运维架构 > Nginx

Nginx/OpenResty 谨慎配置 8.8.8.8 作为 DNS server

2017-07-19 22:31 417 查看

目录

目录

问题

分析

题外话

问题

Nginx resolver 配置:

resolver 127.0.0.1 8.8.8.8;


项目中两处使用域名,一处为外网 CDN 域名,一处为 MySQL 集群域名(可能为内网私有域名,也可能为外网共有域名)。

部署完之后测试两处都能正常解析,但运行一段时间之后会报
db.example.com could not be resolved (3: Host not found)
错误。

分析

dig
测试 DNS server 对两类域名的解析情况:

dig @127.0.0.1 www.baidu.com
dig @127.0.0.1 db.example.com

dig @8.8.8.8 www.baidu.com
dig @8.8.8.8 db.example.com


127.0.0.1
均能得到
ANSWER SECTION
, 例如:

;; ANSWER SECTION:
www.baidu.com.          8       IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       91      IN      A       103.235.46.39


dig @8.8.8.8 db.example.com
只能得到
AUTHORITY SECTION
:

;; AUTHORITY SECTION:
.                       86398   IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2017071900 1800 900 604800 86400


至此,原因很清楚了:Nginx 会轮询使用多个 DNS server, 测试时正好遇到了
127.0.0.1
, 因此没问题,后续轮询到
8.8.8.8
时出现了问题。

题外话

是不是所有的内网 IP 都只能用内网域名映射,答案是:否。AWS 的 MySQL 集群域名就是外网 DNS server(e.g.
8.8.8.8
) 可以解析的,但是其映射的 IP 确实内网 IP.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: