一、参数解释
可以理解为 nginx
通过 proxy_pass
指令访问其他服务时(其他服务为域名的方式)。nginx
会请求 resolver
中配置的 dns
地址,获得 upstream
服务中的 IP
后再继续访问第三方服务。
语法:
Syntax: resolver address ... [valid=time] [ipv6=on|off];
Default: —
Context: http, server, location
Configures name servers used to resolve names of upstream servers into addresses, for example:
示例:
resolver 8.8.8.8;
set $upstream_host "https://ww.baidu.com";
location /v2 {
proxy_pass $upstream_host;
}
注意proxy_pass
中的域名 $upstream_host
,并不是每次请求都会解析这个域名的ip,所以当 $upstream_host
的 ip
出现变动时,服务无法访问。
解决:
注意 resolver
语法中有一个 valid
值,该值是指 nginx
记录 $upstream_host
的 dns
解析缓存时间(单位/秒),默认时间取决于 dns
记录的 ttl
值。那么可以根据项目情况制定这个缓存时间。
示例:
http {
resolver 202.102.134.68 114.114.114.114 valid=60 ipv6=off;
location ~/bridge/v1 {
set $upstream_host $http_upstream_host;
proxy_pass http://$upstream_host;
}
}