Nginx配置resolver指定DNS解析

nginx 通过 proxy_pass 和 upstream server 通信的时候需要手动指定 resolver。某些时候 DNS 解析失败就会出现domain.com could not be resolved.这样的错误。

resolver可以指定多个DNS,使用valid来设置缓存时间,如下:

resolver 119.29.29.29 114.114.114.114 valid=3600s;

如果不填写端口则默认使用53,还可以向下面这样指定DNS端口:

resolver 127.0.0.1:5353 valid=30s;

不知道什么原因在反向代理的时候即使指定了DNS,但是根本没生效,依然提示could not be resolved.这样的错误,可以使用下面的方法强制更新解析:

resolver 127.0.0.1;
set $backend "foo.example.com";
proxy_pass http://$backend;

此文参考了
Nginx DNS resolver配置实例

Does Nginx honor DNS TTLs for proxy upstreams?

标签: nginx 配置 DNS解析 nginx resolver

发表评论: