Nginx Load Balance / Proxy para Upstream com Path / Rewrite

1

Basicamente, tenho um farm de APIs como

192.168.1.1, 192.168.1.2, 192.168.1.3

No entanto, os pontos de extremidade têm estrutura de pastas diferente (terceiros que eu não posso alterar!)

Então, basicamente, eu quero ter uma configuração nginx algo como isto

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

No entanto, você não pode ter o caminho nos servidores upstream. Eu suponho que tenho que reescrever isso? Eu sei como fazer isso para o pedido de entrada para reescrevê-lo, mas não sei como eu posso reescrevê-lo diferentemente quando ele vai para cada servidor de back-end.

Muito obrigado antecipadamente !!

    
por Matt The Ninja 19.08.2015 / 10:06

1 resposta

2

Existe uma solução para isso. A ideia é criar um bloco de servidores proxy para cada upstream.

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;
    }
}
    
por 19.08.2015 / 10:49