Nginx 负载均衡/代理到上游路径/重写

Nginx 负载均衡/代理到上游路径/重写

基本上我有一个 API 农场

192.168.1.1, 192.168.1.2, 192.168.1.3

但是端点有不同的文件夹结构(第三方,我无法修改!)

所以基本上我想要一个像这样的 nginx 配置

upsteam api_servers{
    server 192.168.1.1/api/;
    server 192.168.1.2/myApp/api/;
    server 192.168.1.3/;
}
server{
    listen 80;
    location / {
        proxy_pass http://api_servers;
    }
}

但是您不能在上游服务器中拥有路径。我想我必须重写这些?我知道如何对传入请求进行重写,但不确定如何重写它不同地当它到达每个后端服务器时。

提前谢谢了!!

答案1

有一个解决方法。这个想法是制作一个代理人每个上游的服务器块。

upsteam api_servers {
    server 127.0.1.1;
    server 127.0.1.2;
    server 192.168.1.3;
}

server {
    listen 127.0.1.1;
    location / {
        proxy_pass http://192.168.1.1/api/;
    }
}

server {
    listen 127.0.1.2;
    location / {
        proxy_pass http://192.168.1.2/myApp/api/;
    }
}

server {
    listen 80;
    location / {
        proxy_pass http://api_servers;
    }
}

相关内容