Definição
Proxy reverso é um intermediário que recebe chamadas destinadas a um serviço e as encaminha a outros servidores. Você pode usá-lo na entrada pública de uma aplicação ou entre serviços internos, conforme a organização da rede.
Para o cliente, o endereço acessado é o do proxy. A aplicação de destino, também chamada de upstream nessa configuração, atende outra conexão aberta pelo intermediário.
Encaminhar por nome e caminho
Um proxy pode selecionar o destino pelo hostname ou pelo caminho da requisição. Assim, chamadas para /api/ podem chegar ao backend enquanto outras recebem os arquivos da interface.
O caminho entregue à aplicação depende da configuração: o prefixo pode ser preservado ou removido. Essa diferença precisa corresponder às rotas que o serviço realmente atende, porque alcançar a máquina correta não comprova que a URL encaminhada exista.
TLS e cabeçalhos atravessam etapas distintas
Quando o proxy encerra a conexão TLS, ele recebe a chamada protegida do cliente e inicia outra comunicação com a aplicação. A configuração de TLS do segundo trecho precisa ser conferida separadamente, pois o HTTPS visto no navegador comprova apenas a proteção até o proxy.
Cabeçalhos encaminhados podem informar endereço de origem e protocolo usado pelo cliente. A aplicação precisa confiar nesses valores somente quando recebidos pelos intermediários previstos, pois cabeçalhos fornecidos livremente pelo cliente podem ser falsificados.
Investigar cada trecho
Confira separadamente cliente até proxy e proxy até aplicação. Um destino configurado como localhost precisa ser interpretado a partir do ambiente do proxy, sobretudo quando os processos estão em containers diferentes.
Se os controles de acesso ficam no proxy, confira também a conexão direta à aplicação a partir das redes que não deveriam alcançá-la. Uma porta interna publicada no host pode criar outro caminho de entrada. Restrinja esse acesso conforme a arquitetura do projeto e teste se uma chamada recusada pelo proxy também pode chegar diretamente ao backend.
O Desenvolvimento Colaborativo da Dev Side Studio pode acompanhar a análise dos encaminhamentos e das respostas, relacionando a configuração do proxy às rotas do seu projeto.
Dúvidas frequentes
Perguntas frequentes sobre Proxy reverso
- Proxy reverso e balanceador são a mesma coisa?
- As funções são diferentes, mas um mesmo componente pode executar ambas. Ele pode encaminhar chamadas e distribuir o atendimento entre vários destinos.
- HTTPS no proxy protege também a conexão com a aplicação?
- Somente se esse trecho também estiver configurado para usar TLS. A conexão do cliente ao proxy e a conexão do proxy à aplicação são separadas.
- O destino localhost sempre aponta para o servidor da aplicação?
- Não. Localhost se refere ao ambiente de rede do processo que abre a conexão. Em containers separados, normalmente não aponta para o outro container.
- Receber erro do proxy comprova que o DNS falhou?
- Não. O cliente pode ter alcançado o proxy corretamente. A falha pode estar na comunicação com o destino, no caminho encaminhado ou na resposta da aplicação.
Para continuar
Recursos relacionados
Documentação
NGINX: proxy reverso
Apresenta encaminhamento, destinos e tratamento de cabeçalhos HTTP.
Abrir recursoDocumentação
MDN: cache HTTP
Situa os caches intermediários e suas condições de uso na entrega HTTP.
Abrir recursoAplicação na formação
Formação DevOps
O proxy reverso recebe chamadas e seleciona os serviços de destino conforme o hostname, o caminho e a configuração da infraestrutura.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.