Partilhar via


O que é um proxy?

Um proxy é um servidor intermediário que fica entre um cliente (como seu aplicativo) e um servidor de destino (como uma API back-end). Quando seu aplicativo envia uma solicitação, o proxy a recebe primeiro. O proxy pode então encaminhar a solicitação para o servidor de destino, modificá-la, bloqueá-la ou retornar uma resposta diretamente.

Em resumo, um proxy atua em nome do cliente ou do servidor para mediar a comunicação.

Como funciona um proxy

Os proxies operam no nível HTTP (ou outros protocolos de aplicativo) recebendo solicitações de entrada e executando uma ou mais das seguintes ações:

  • Encaminhar a solicitação para o servidor de destino e, em seguida, retransmitir a resposta de volta para o cliente.
  • Modificar cabeçalhos, URLs ou cargas úteis antes de encaminhar.
  • Intercetar e responder à solicitação localmente sem entrar em contato com o servidor de destino.
  • Rejeitar a solicitação com base em regras ou políticas de acesso.

Do ponto de vista do cliente, é simplesmente enviar uma solicitação para uma URL. O proxy trata de tudo o resto nos bastidores. O padrão é cliente para proxy para servidor de destino.

Esse padrão introduz uma camada de controle e abstração que você pode usar para melhorar a segurança, a observabilidade, o desempenho e a estabilidade.

Tipos de proxies

Existem diferentes tipos de proxies. Cada um é adequado para funções específicas na arquitetura do sistema.

Proxy de encaminhamento

Um proxy de encaminhamento fica na frente do cliente . Quando seu aplicativo faz uma solicitação, ele passa pelo proxy, que decide se e como encaminhá-lo. Os proxies de encaminhamento são normalmente utilizados para:

  • Controle o acesso a recursos externos.
  • Anonimizar o tráfego do cliente.
  • Registre o tráfego de saída para monitoramento.
  • Aplique filtragem ou transformação de conteúdo.

Proxy reverso

Um proxy reverso está localizado em frente ao servidor . Os clientes não estão cientes da infraestrutura de back-end subjacente. O proxy reverso recebe solicitações de entrada e as encaminha para um dos vários servidores back-end. Os proxies reversos são comumente usados para:

  • Balanceie a carga do tráfego em vários serviços.
  • Sirva respostas em cache para reduzir a carga do backend.
  • Encerre conexões TLS/SSL.
  • Oculte os detalhes dos serviços internos da internet pública.

Proxy transparente

Um proxy transparente interceta o tráfego sem que o cliente esteja explicitamente configurado para usá-lo. Esse tipo é usado em ambientes corporativos ou de provedores de serviços de Internet para impor políticas ou monitorar o uso.

Por que os proxies são importantes para os desenvolvedores de aplicativos

Muitas vezes, as equipes de infraestrutura ou rede gerenciam proxies. No entanto, os proxies afetam diretamente o comportamento do aplicativo, especialmente em ambientes de desenvolvimento e teste. Aqui estão algumas maneiras práticas como eles afetam o seu trabalho diário.

Depuração e observabilidade

Os proxies podem capturar e inspecionar o tráfego HTTP. Ferramentas como Dev Proxy, Fiddler, Proxyman, Charles Proxy ou mitmproxy atuam como proxies de encaminhamento local. Você pode executar seu aplicativo através deles para analisar solicitações e respostas, detetar erros e verificar cabeçalhos ou tokens de autenticação.

Gateway de API e roteamento

Em muitos sistemas de produção, o tráfego para o back-end do seu aplicativo é roteado por meio de um gateway de API ou proxy reverso, como NGINX, ou um serviço nativo da nuvem, como o Gerenciamento de API do Azure. Esses proxies lidam com roteamento, autenticação, limitação de taxa e muito mais.

Ao projetar sua API ou criar serviços distribuídos, você deve entender como os proxies afetam cabeçalhos (como X-Forwarded-For), tempos limite e limites de tamanho de solicitação.

O CORS e o desenvolvimento local

Durante o desenvolvimento local, especialmente em aplicativos Web, você pode encontrar restrições de compartilhamento de recursos entre origens (CORS) ao chamar APIs do navegador. Um proxy de desenvolvimento pode encaminhar suas solicitações para a API de destino enquanto reescreve cabeçalhos para contornar as limitações do CORS. Exemplos comuns de ferramentas de desenvolvedor que reescrevem solicitações CORS são vite, webpack-dev-server, ou middleware de proxy personalizado em estruturas como Express ou ASP.NET Core.

Virtualização e teste de serviços

Os proxies podem simular APIs de back-end. Esse recurso é útil quando o serviço real está indisponível, instável ou caro de usar durante o teste. Ao interceptar e simular respostas, pode-se testar o comportamento da aplicação em diferentes cenários, como tempos de espera, erros ou dados malformados.

Ferramentas como Dev Proxy ou implementações de proxy personalizadas são comumente usadas para essa finalidade em testes de integração e de ponta a ponta.

Autenticação e segurança

Os proxies são muitas vezes a linha da frente da defesa na segurança de aplicações. Eles podem impor controles de acesso, injetar cabeçalhos de autenticação ou encerrar conexões TLS/SSL. Como desenvolvedor, é importante estar ciente de como seu aplicativo se comporta quando fica atrás de um proxy e como acessar cabeçalhos que carregam informações de autenticação ou identidade.

Considerações comuns sobre proxies e cabeçalhos

Quando uma solicitação passa por um proxy, determinados cabeçalhos são adicionados ou modificados para preservar metadados importantes. Por exemplo:

  • X-Forwarded-For: Indica o endereço IP original do cliente.
  • X-Forwarded-Proto: Indica o protocolo original (HTTP ou HTTPS).
  • X-Forwarded-Host: Indica o host original solicitado pelo cliente.

Quando seu aplicativo é executado atrás de um proxy reverso, certifique-se de que sua estrutura ou plataforma esteja configurada para confiar e interpretar esses cabeçalhos corretamente.

Dev Proxy como um proxy intermediário para desenvolvimento e testes

O Dev Proxy é um proxy de encaminhamento que você pode usar para intercetar e modificar solicitações do seu aplicativo para qualquer servidor de destino. Com o Dev Proxy, você pode:

  • Veja como seu aplicativo responde a erros de API.
  • Verifique como seu aplicativo lida com os limites de taxa de API.
  • Veja como seu aplicativo lida com APIs lentas.
  • Crie rapidamente APIs simuladas sem escrever uma linha de código.
  • Melhore seu aplicativo com orientações contextuais sobre como você usa APIs.

Próximo passo