nginx中的resolver语法解释

nginx中的resolver语法解释
 最后更新于 2024年10月02日 23:14:10

一、参数解释

可以理解为 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_hostip 出现变动时,服务无法访问。

解决: 注意 resolver 语法中有一个 valid 值,该值是指 nginx 记录 $upstream_hostdns 解析缓存时间(单位/秒),默认时间取决于 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;
 }
}