Назад | Перейти на главную страницу

Nginx Load Balance / Proxy to Upstream с Path / Rewrite

В основном у меня есть ферма 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;
    }
}

Однако у вас не может быть пути на вышестоящих серверах. Полагаю, мне придется их переписать? Я знаю, как это сделать для входящего запроса, чтобы его переписать, но не знаю, как его переписать по-другому когда он поступает на каждый внутренний сервер.

Спасибо заранее!!

Для этого есть обходной путь. Идея состоит в том, чтобы сделать доверенное лицо серверный блок для каждого восходящего потока.

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