jdomain

'jdomain' 指令使 NGINX 中的 upstream server 配置能够进行异步域名解析。

语法jdomain domain_name [options];
默认值none
上下文upstream
参数1+

说明

'jdomain' 指令允许 NGINX 在 upstream server 定义中使用域名,从而实现域名的动态解析。此功能使 upstream 配置对 DNS 更新具有弹性,确保传入请求能够根据最新的 DNS 解析结果路由到正确的后端服务器。当请求针对 jdomain upstream 时,会检查自上次 DNS 解析以来是否已过指定的间隔;如果已过,则执行新的 DNS 查找。这避免了定期的 DNS 检查,而是根据需求触发解析。

jdomain 指令的一个独特特性是它在处理多个 upstream 并混合其他 upstream 指令时的灵活性。用户可以在同一 upstream block 中定义多个 'jdomain' 指令、'server' 指令以及负载均衡规则。然而,在指定负载均衡算法时需要谨慎,因为任何自定义算法必须位于 upstream block 中的 jdomain 指令之前,以防止运行时崩溃。此外,由于 DNS 解析是异步进行的,如果 upstream 配置在 DNS 查找期间发生意外更改,指向 jdomain upstream 的请求可能会遇到一次性失败,这凸显了谨慎管理 upstream 状态的重要性。

配置示例

resolver 8.8.8.8;  

upstream backend {  
    jdomain example.com;  
    jdomain anotherdomain.com port=8080;  
}

必须在 jdomain 指令之前指定负载均衡算法,以避免运行时崩溃。

异步 DNS 解析可能会在请求处理期间 upstream 状态发生变化时导致一次性失败。

在使用 jdomain 之前,确保在 HTTP context 中定义了 resolver。

← 返回所有指令