Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 em diferentes cenários, como tempos limite, 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 da 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.
Usar um proxy para testar como seu aplicativo lida com falhas de API
Como um proxy de encaminhamento vê todas as solicitações enviadas pelo aplicativo, ele também pode responder a algumas delas com uma falha em vez de encaminhá-las: um 500, um 429 Too Many Requests com um cabeçalho Retry-After ou uma resposta que leva 8 segundos. Seu aplicativo continua chamando as URLs de API reais, para que você teste o aplicativo conforme ele é executado em produção, incluindo seu cliente HTTP, SDK e política de repetição.
Comparado com outras maneiras de testar falhas de API:
| Approach | O que você encontra | Do que você sente falta |
|---|---|---|
| Aguardar implantação | Falhas reais | Tudo, até que um usuário clique nele |
| Fazer mock da API em seus testes ou deixar seu agente de codificação escrever o mock | Se suas ramificações de erro são executadas | Os códigos de status, cabeçalhos e corpos de erro reais da API e a política de repetição do seu SDK. Seu aplicativo também precisa de uma opção somente de teste para acessar o mock. |
| Chame a API real e espere que ela falhe | Comportamento real | Você não pode provocar uma falha sob demanda |
| Execute seu aplicativo por meio de um proxy que simula falhas | Erros, limitação e latência nas URLs reais, sob demanda | Seu código de forma isolada. Guarde isso para seus testes de unidade. |
Dev Proxy como proxy de encaminhamento para desenvolvimento e teste
O Proxy de Desenvolvimento é um proxy de encaminhamento que você executa no computador ou na CI para interceptar e modificar solicitações do aplicativo para as APIs escolhidas. Com o Proxy de Desenvolvimento, você pode:
- Veja como seu aplicativo responde a erros de API.
- Verifique como seu aplicativo lida com limites de taxa de API e limitação.
- Veja como seu aplicativo lida com APIs lentas.
- Crie as APIs simuladas sem escrever uma linha de código.
- Obtenha diretrizes contextuais sobre como usar APIs.
Para experimentá-lo na API que seu aplicativo chama, baixe uma predefinição e inicie o Proxy de Desenvolvimento com ela. Por exemplo, para GitHub:
devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"
Predefinições também estão disponíveis para pontos de extremidade openai (openai-throttling), Anthropic (anthropic-throttling) e Microsoft Graph OneDrive e SharePoint (microsoft-graph-rate-limiting).
Tente você mesmo
Escolha um cenário que corresponda ao que você está criando:
- Testar como seu aplicativo lida com erros de API (5 minutos)
- Simular limitação de taxa em qualquer API (10 minutos)
- Simular respostas de API sem alterar seu código (10 minutos)
- Usar um modelo local em vez de OpenAI durante o desenvolvimento (15 minutos)