Compartilhar 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 de back-end). Quando seu aplicativo envia uma solicitação, o proxy a recebe primeiro. Em seguida, o proxy pode encaminhar a solicitação para o servidor de destino, modificá-la, bloqueá-la ou retornar uma resposta diretamente.

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

Como um proxy funciona

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

  • Encaminhando a solicitação para o servidor de destino e, em seguida, retransmitindo a resposta de volta para o cliente.
  • Modificar cabeçalhos, URLs ou payloads antes do encaminhamento.
  • Interceptando e respondendo à solicitação localmente sem entrar em contato com o servidor de destino.
  • Rejeitando a solicitação com base em regras ou políticas de acesso.

Do ponto de vista do cliente, ele está simplesmente enviando uma solicitação para uma URL. O proxy gerencia todo o resto nos bastidores. O padrão é do cliente para o proxy e para o 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 capacidade de teste.

Tipos de proxies

Há diferentes tipos de proxies. Cada uma delas é adequada para funções específicas na arquitetura do sistema.

Proxy de encaminhamento

Um proxy avançado 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 geralmente são usados para:

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

Proxy reverso HTTP

Um proxy reverso fica na frente do 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 de back-end. Os proxies reversos HTTP são comumente usados para:

  • Balancear a carga de tráfego entre vários serviços.
  • Sirva respostas armazenadas em cache para reduzir a carga de back-end.
  • Encerrar conexões TLS/SSL.
  • Ocultar detalhes do serviço interno da Internet pública.

Proxy transparente

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

Por que os proxies importam para desenvolvedores de aplicativos

Geralmente, as equipes de infraestrutura ou de 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 de afetar 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 por meio deles para analisar solicitações e respostas, detectar 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 aplicativo é roteado por meio de um gateway de API ou proxy reverso, como NGINX, ou um serviço nativo de 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 da solicitação.

CORS e desenvolvimento local

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

Virtualização e teste de serviço

Proxies podem simular APIs de back-end. Essa funcionalidade é útil quando o serviço real está indisponível, instável ou caro para ser usado durante o teste. Ao interceptar e simular respostas, você pode testar o comportamento do aplicativo sob diferentes cenários, como tempo de espera excedido, 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 ponta a ponta.

Autenticação e segurança

Proxies geralmente são a linha de frente de defesa na proteção de aplicativos. 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 ele fica atrás de um proxy e como acessar cabeçalhos que carregam informações de autenticação ou identidade.

Considerações comuns sobre cabeçalhos e proxy

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, verifique se sua estrutura ou plataforma está configurada para confiar e interpretar esses cabeçalhos corretamente.

Dev Proxy como proxy de encaminhamento para desenvolvimento e teste

Dev Proxy é um proxy de encaminhamento que você pode usar para interceptar e modificar solicitações do seu aplicativo para qualquer servidor de destino. Com o Proxy de Desenvolvimento, 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 a necessidade de escrever uma linha de código.
  • Melhore seu aplicativo com diretrizes contextuais sobre como você usa APIs.

Próxima etapa