Nginx DNS 解析与 Resolver 配置

Nginx 是一个高性能的 web 服务器和反向代理服务器,在处理 DNS 解析时具有其特定的行为和配置方式。这里简要说明 Nginx 的 DNS 解析机制以及如何通过 resolver 指令进行配置,以确保服务的稳定性和可靠性。

Nginx 的 DNS 解析机制

Nginx 在启动时会缓存系统的 DNS 设置,即 /etc/resolv.conf 中的配置,并使用这些设置进行域名解析。这种行为适用于大多数静态配置场景。然而,Nginx 默认不会在每个请求上动态解析域名。这意味着如果配置中使用了域名(例如在 proxy_pass 指令中),Nginx 在启动时解析这些域名一次,并使用这些解析结果直到重新加载配置或重启。如果这些域名的 IP 地址在 Nginx 运行时发生变化,Nginx 不会自动感知到这些变化。

使用 resolver 指令

为了支持动态域名解析,可以在 Nginx 配置中使用 resolver 指令,指定一个或多个 DNS 服务器,以及可选的缓存时间。

示例

resolver 8.8.8.8 8.8.4.4 valid=300s;