Questão de Redes de Computadores — Nginx — VUNESP 2023
Redes de Computadores›Nginx
Código
vu196571
Banca
VUNESP
Órgão
TJ RS
Ano
2023
Cargo
ATI ( )
Em uma aplicação web, deseja-se utilizar o NGINX para realizar balanceamento de carga HTTP entre dois servidores (app1.exemplo.com e app2.exemplo.com). Deseja-se repassar o dobro de requisições para o primeiro servidor em relação ao segundo. Para isso, utiliza-se a seguinte configuração no bloco http do arquivo de configurações, em que duas linhas estão propositalmente ocultas e representadas por lacunas: upstream backend {____________ } server { location / { proxy_pass http://backend; } } Para resolver o problema, o conteúdo a ser preenchido nas duas lacunas é:
Aserver app1.exemplo.com:80 weight=2; server app2.exemplo.com:80 weight=1;
Bapp1.exemplo.com:80 2; app2.exemplo.com:80 1;
Capp1.exemplo.com:80,app2.exemplo.com:80 2,1
Dserver app1.exemplo.com:80 2x; server app2.exemplo.com:80 1x;
Eserver 2 app1.exemplo.com:80; server 1 app2.exemplo.com:80;
Revelar gabarito e comentário▾
GabaritoA — server app1.exemplo.com:80 weight=2;
server app2.exemplo.com:80 weight=1;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Balanceamento de carga HTTP com NGINX
Gabarito: letra A. No NGINX, o balanceamento de carga é configurado no bloco upstream, e cada servidor é declarado com a diretiva server, seguida do endereço e da porta. Para distribuir as requisições de forma ponderada, utiliza-se o parâmetro weight, que define o peso relativo de cada servidor — com weight=2 para o primeiro e weight=1 para o segundo, o primeiro recebe o dobro de requisições.
O NGINX é um servidor web e proxy reverso amplamente utilizado, e uma de suas funcionalidades mais comuns é o balanceamento de carga HTTP. O bloco upstream define um grupo de servidores de backend, e a diretiva server dentro desse bloco especifica cada servidor do grupo. O parâmetro weight é a chave para o balanceamento ponderado: ele indica a proporção de requisições que cada servidor deve receber em relação aos demais. Se um servidor tem weight=2 e outro weight=1, o primeiro recebe duas requisições para cada uma que o segundo recebe.
A sintaxe correta da diretiva server no bloco upstream é server endereco:porta parametros;. Os parâmetros são opcionais e podem incluir weight, max_fails, fail_timeout, entre outros. O valor padrão de weight é 1, e ele pode ser um número inteiro positivo. É importante notar que a diretiva server dentro do bloco upstream é diferente da diretiva server que define um bloco de configuração de um site — no contexto do upstream, ela apenas declara um servidor de backend.
Para entender melhor, considere um exemplo prático: se você tem dois servidores, um mais potente que o outro, pode configurar o NGINX para enviar mais tráfego ao mais potente. Com weight=3 para o primeiro e weight=1 para o segundo, a cada quatro requisições, três vão para o primeiro e uma para o segundo. Essa é uma forma simples e eficaz de otimizar o uso dos recursos.
A pegadinha desta questão está em reconhecer a sintaxe exata do NGINX. As alternativas incorretas usam formatos que não são válidos, como omitir a palavra server, usar vírgulas, ou colocar o peso antes do endereço. O candidato que conhece a sintaxe correta identifica imediatamente a alternativa A como a única que segue o padrão server endereco:porta weight=N;.
Guarde a estrutura server endereco:porta weight=N; dentro do bloco upstream — é exatamente esse formato que as alternativas tentam distorcer.
1Bloco upstream
2Diretiva server
3Endereço:porta
4Parâmetro weight=N
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Esta é a única alternativa que utiliza a sintaxe correta do NGINX. A diretiva server é usada para declarar cada servidor no bloco upstream, seguida do endereço e da porta, e o parâmetro weight define o peso de cada um. Com weight=2 para o primeiro e weight=1 para o segundo, o NGINX distribui as requisições na proporção de 2:1, exatamente como desejado.
Alternativa B — ❌ Incorreta
Esta alternativa omite a palavra-chave server, que é obrigatória para declarar um servidor no bloco upstream. A sintaxe app1.exemplo.com:80 2; não é válida no NGINX — sem a diretiva server, o NGINX não reconhece a linha como uma declaração de servidor.
Alternativa C — ❌ Incorreta
Esta alternativa usa vírgulas para separar os servidores e os pesos, o que não é a sintaxe do NGINX. No bloco upstream, cada servidor é declarado em uma linha separada com a diretiva server, e os parâmetros são separados por espaços, não por vírgulas.
Alternativa D — ❌ Incorreta
Esta alternativa usa o sufixo x após o peso (2x e 1x), o que não é reconhecido pelo NGINX. O parâmetro weight deve ser um número inteiro, sem qualquer sufixo. A sintaxe correta é weight=2, não 2x.
Alternativa E — ❌ Incorreta
Esta alternativa inverte a ordem dos elementos, colocando o peso antes do endereço (server 2 app1.exemplo.com:80;). No NGINX, a ordem correta é server endereco:porta weight=N; — o peso vem depois do endereço, como um parâmetro.
A regra de ouro para o balanceamento de carga no NGINX é: dentro do bloco upstream, cada servidor é declarado com server endereco:porta;, e o peso é definido com o parâmetro weight=N. Essa é a sintaxe que você deve memorizar para a prova.