nginx dns resolver配置实例,proxy_pass与upstream server通信时手动指定resolver,解决dns解析失败的问题。 nginx 通过 proxy_pass 和 upstream server 通信,需要手动指定 resolver。
dns解析失败出现错误:
可以指定多个dns,并重置域名ttl值,延长nginx解析缓存来保障解析成功率:
resolver 223.5.5.5 223.6.6.6 1.2.4.8 114.114.114.114 valid=3600s;
若解析错误,可以用 dnsmasq 在本地自建dns,顺带还有加速解析的好处:
#/etc/dnsmasq.conf
domain-needed bogus-priv cache-size=51200 listen-address=127.0.0.1 #server=223.5.5.5 resolv-file=/etc/resolv.conf
注意,proxy_pass 并不是每次请求都解析,如果 upstream IP 频繁变动,需强制解析:
# via http://forum.nginx.org/read.php?2,215830,215832#msg-215832
resolver 127.0.0.1; set $backend "foo.example.com"; proxy_pass http://$backend; |