使用 nginx 设置动态上游

Setup dynamic upstream with nginx

假设我必须上游来源

upstream first {
}

upstream second {
}

然后在server区块

map $geoip_country_code $is_china {
    default no;
    CN yes;
}

如果$is_china,我想实现的是使用不同的上游

proxy_pass http://$preferred_host/;

我不知道如何用 nginx 做到这一点。

原来我可以在 nginx

中使用 if
set $preferred_host http://first;
if ($is_china) {
    set $preferred_host http://second;
}

location / {
    proxy_pass $preferred_host/;
    ...
}

map 可能就足够了。您是否尝试过以下方法?

map $geoip_country_code $preferred_host {
    default first;
    CN      second;
}