Iniciante Fundamentos

Balanceamento de carga

Quando uma aplicação roda em vários servidores, o Nginx pode distribuir o tráfego entre eles. Isso é o balanceamento de carga e melhora desempenho e disponibilidade.

O bloco upstream

Primeiro você agrupa os servidores em um bloco upstream:

http {
    upstream app {
        server 127.0.0.1:3001;
        server 127.0.0.1:3002;
        server 127.0.0.1:3003;
    }
}

Depois aponta o proxy_pass para esse grupo pelo nome:

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

Métodos de distribuição

Por padrão o Nginx usa round-robin, alternando entre os servidores em ordem.

Para enviar ao servidor com menos conexões ativas, use least_conn:

upstream app {
    least_conn;
    server 127.0.0.1:3001;
    server 127.0.0.1:3002;
}

Pesos

Você pode dar mais tráfego a um servidor mais forte com weight:

upstream app {
    server 127.0.0.1:3001 weight=3;
    server 127.0.0.1:3002 weight=1;
}

Resumo

Agrupe servidores em upstream e aponte o proxy_pass para o grupo. O padrão é round-robin, mas você pode usar least_conn ou pesos para ajustar a distribuição.