nginx中resolver指令的作用是什么?

发布时间 2023-07-10 16:25:49作者: 安大

作用:配置域名服务器。用来把upstream中的服务器的域名解析为IP地址。

 

语法:

Syntax:    resolver address ... [valid=time] [ipv4=on|off] [ipv6=on|off] [status_zone=zone];
Default:    —
Context:    http, server, location

 

 

示例:

 

当访问proxy_pass中的backend的时候,会使用这个DNS进行解析。

http {
  resolver DNS_SERVER_ADDRESS1 DNS_SERVER_ADDRESS2;
  
  server {
    listen 80;
    server_name example.com;
    
    location / {
      proxy_pass http://backend;
    }
  }
}

 

 

配置resolver指令后,当Nginx需要解析代理请求(proxy_pass)或上游服务器的域名(server后面是域名)时,它将使用指定的DNS服务器进行解析。

 

比如,upstream中的server配置的是域名的情况,会使用域名进行解析

http {

resolver DNS_SERVER_ADDRESS1 DNS_SERVER_ADDRESS2;

  upstream backend {
    server backend1.example.com;
    server backend2.example.com;
  }
  
  server {
    listen 80;
    server_name example.com;
    
    location / {
      proxy_pass http://backend;
    }
  }
}
 

 

需要注意的是,resolver指令只需要配置一次,并且通常在http块中配置,以便在所有server块中共享。

 

另外,Nginx还支持在resolver指令中指定多个DNS服务器地址,以提供冗余和故障转移功能。