Dictionary Nginx can';从文件加载服务器名称时,无法解析服务器名称

Dictionary Nginx can';从文件加载服务器名称时,无法解析服务器名称,dictionary,nginx,dns,upstream,Dictionary,Nginx,Dns,Upstream,我是nginx新手,尝试实现以下行为:我希望将头传递给nginx,并根据给定的头将请求传递给另一台服务器。我想从一个文件加载我的地图,所以我使用以下代码 worker_processes 1; error_log logs/error.log; events { worker_connections 1024; } http { include mime.types; default_type application/octet-strea

我是nginx新手,尝试实现以下行为:我希望将头传递给nginx,并根据给定的头将请求传递给另一台服务器。我想从一个文件加载我的地图,所以我使用以下代码


worker_processes  1;

error_log  logs/error.log;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';


    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;

   map $http_dest $new_server{
    include port_to_address.map;
    default google.com;
   }


    server {
        listen       200;
        server_name  localhost;


        access_log  logs/host.access.log  main;

        location / {
           proxy_pass http://$new_server;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

}

使用以下格式的端口到地址映射

value_1 yahoo.com;
value_2 neflix.com;
使用此配置,nginx正常启动,但当我向他传递文件中存在的头时,他返回以下错误

2021/04/18 21:52:49 [error] 17352#20504: *3 no resolver defined to resolve yahoo.com, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost:200"
当我使用ip地址而不是服务器名称时,它工作得非常好。我还得到了另一个nginx,它在从文件读取的节点之间循环请求(使用上游),在那里我没有得到任何异常,尽管我使用的是服务器的名称,而不是它们的ip


我读过关于使用解析器的文章,但它不起作用,我宁愿避免使用它。有没有其他方法可以让它在不使用解析器或ip服务器的情况下工作?(如果需要,我不介意更改映射文件结构)

@DanilaVershinin根据,
include
map
块中的一个特殊参数。在
proxy\u pass
语句中使用变量时,需要定义一个
解析器。看见