根据主机名让 nginx 路由上行

根据主机名让 nginx 路由上行

我目前正在尝试制作一个 nginx 文件,根据主机将请求路由到两个上游服务器(本地或远程服务器)中的一个。例如,我正在尝试以下操作

map $host $upstream_host {
    api.example.to api2.example.to;
    api.example2.to api2.example2.to;
    api.example3.to api2.example3.to;
    api.example4.to api2.example4.to;
}

upstream backend {
    ip_hash;
    server $upstream_host;
    server unix:/home/www/api.to/app.sock;


}

server {
    server_name api.example.to;
    ...
    location / {
        proxy_pass http://backend;
        ...
    }
    ...
}

但是这个错误nginx: [emerg] host not found in upstream "$upstream_host" in /etc/nginx/sites-enabled/api.to.conf:18

所以我不确定这是否可以通过 nginx 实现?例如,我只想将发送到 api.example.to 的请求发送到本地的框或 api2.example.to,同样,将 api.example2.to 发送到 api2.example2.to 或本地 unix 服务器作为负载平衡。

操作系统是 Ubuntu 20.04 和 nginx 1.18。注意,我在使用 nginx 1.22.1 时也遇到了同样的问题

相关内容