我目前正在尝试制作一个 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 时也遇到了同样的问题