Nginx

Nginx 負載平衡/代理到上游的路徑/重寫

  • August 19, 2015

基本上我有一個 API 農場

192.168.1.1, 192.168.1.2, 192.168.1.3

但是端點具有不同的文件夾結構(我無法修改的第 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;
   }
}

但是,您不能在上游伺服器中有路徑。我想我必須重寫這些?我知道如何為傳入的請求重寫它,但不確定當它到達每個後端伺服器時如何以不同的方式重寫它。

提前謝謝了!!

有一個解決方法。想法是為每個上游製作一個代理伺服器塊。

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

引用自:https://serverfault.com/questions/715186