从文件加载时 Nginx 无法解析服务器名称

问题描述

我是 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;
        }

    }

}

使用以下格式的 port_to_address.map

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 的情况下使其工作? (如果需要,我不介意更改地图文件结构)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...