resolver

NGINX 中的 'resolver' 指令启用对代理请求的 DNS 解析,使用外部解析器。

语法resolver address [address ...] [valid=duration] [timeout=duration];
默认值none
上下文
参数1+

说明

'resolver' 指令配置 NGINX 在处理客户端请求时用于解析主机名的 DNS 解析器。该指令可以接受一个或多个 DNS 服务器地址,这些地址可以以 IPv4 和 IPv6 格式指定。'resolver' 可在 'main' 或 'server' 上下文中指定,NGINX 将使用所定义的解析器来解析在诸如 'proxy_pass' 或 'fastcgi_pass' 等指令中指定的任何主机名。当提供多个解析器时,NGINX 会按指定顺序尝试使用它们解析主机名。如果第一个解析器失败,则会继续使用下一个。这为 DNS 解析提供了鲁棒性和灵活性,尤其适用于需要冗余的环境。

此外,'resolver' 指令可以接受可选参数,例如 'valid' 和 'timeout',它们分别控制已解析地址的有效期和 DNS 查询的超时时长。这些参数有助于微调 DNS 解析过程的行为,确保在运行时依赖主机名解析的应用具有高可用性和性能。如果未定义解析器但需要解析主机名,NGINX 将返回错误,因此该指令对于依赖动态后端主机的配置至关重要。

配置示例

resolver 8.8.8.8 8.8.4.4;  
location /app {  
    proxy_pass http://mybackend;  
}

确保指定的 resolver 地址可以从您的 NGINX 服务器访问;否则,名称解析将失败。

使用配置不当的 DNS resolver 可能导致延迟问题并使您的应用响应变慢。

如果未设置默认 resolver 且您尝试解析 hostname,NGINX 将返回 '502 Bad Gateway' 错误。

← 返回所有指令