Usar a opção de proxy do sistema

Visão geral
Objetivo: Controlar se o Proxy de Desenvolvimento captura todo o tráfego do sistema ou apenas o tráfego roteado explicitamente
Tempo: 5 minutos
Pré-requisitos:Configurar o Proxy de Desenvolvimento

Por padrão, quando você inicia o Proxy de Desenvolvimento, ele se registra como o proxy do sistema. Como resultado, todo o tráfego HTTP/HTTPS em seu computador é roteado automaticamente por meio do Proxy de Desenvolvimento. Fazer proxy de todo o tráfego por meio do Proxy de Desenvolvimento funciona bem para a maioria dos cenários: você inicia o Proxy de Desenvolvimento e captura imediatamente as solicitações do seu aplicativo sem nenhuma configuração extra.

No entanto, há situações em que você pode querer mais controle sobre qual tráfego passa pelo Proxy de Desenvolvimento. A asSystemProxy opção permite desabilitar o registro automático de proxy do sistema, oferecendo controle refinado sobre quais aplicativos usam o Proxy de Desenvolvimento.

Quando desabilitar o registro de proxy do sistema

Considere a configuração asSystemProxy para false quando:

  • Você está em uma rede corporativa com configurações de proxy existentes que não deseja substituir
  • Você só deseja testar um aplicativo específico sem afetar outros aplicativos em execução em seu computador
  • Outros aplicativos falham quando o Proxy de Desenvolvimento intercepta seu tráfego (por exemplo, Azure Functions)
  • Você está executando várias instâncias de Dev Proxy e deseja rotear o tráfego para instâncias específicas
  • Você deseja minimizar a interferência com serviços do sistema e processos em segundo plano

Configurar a opção de proxy do sistema

Você pode configurar a opção asSystemProxy de duas maneiras: usando o arquivo de configuração ou a linha de comando.

Arquivo de configuração

Para desabilitar persistentemente o registro de proxy do sistema, adicione a asSystemProxy configuração ao arquivo de configuração.

Arquivo:devproxyrc.json
Propósito: Desabilitar o registro automático de proxy do sistema

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "asSystemProxy": false,
  "urlsToWatch": [
    "https://api.contoso.com/*"
  ]
}

Linha de comando

Para desabilitar o registro de proxy do sistema para uma única sessão, use a opção --as-system-proxy .

devproxy --as-system-proxy false

Rotear o tráfego para o Proxy de Desenvolvimento manualmente

Quando você desabilita o registro de proxy do sistema, os aplicativos não roteiam automaticamente seu tráfego através do Dev Proxy. Você precisa configurar cada aplicativo para usar o Proxy de Desenvolvimento explicitamente.

Usando variáveis de ambiente

A maneira mais comum de rotear o tráfego para o Dev Proxy é definindo a variável de ambiente HTTPS_PROXY.

PowerShell:

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
node app.js

Prompt de Comando:

set HTTPS_PROXY=http://127.0.0.1:8000
node app.js
HTTPS_PROXY=http://127.0.0.1:8000 node app.js

Dica

Alguns aplicativos também dão suporte à variável de HTTP_PROXY ambiente. Defina ambos se o aplicativo fizer solicitações HTTP e HTTPS.

Configuração específica do idioma

Diferentes linguagens de programação e estruturas têm suas próprias maneiras de configurar proxies:

Exemplo: testar o Azure Functions sem interferir na inicialização

O Azure Functions usa gRPC para comunicação interna, que falha quando o Dev Proxy é registrado como o proxy do sistema. Para usar o Proxy de Desenvolvimento com o Azure Functions, desabilite o registro de proxy do sistema e configure o proxy por meio de variáveis de ambiente.

Arquivo:devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "asSystemProxy": false,
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ]
}

Arquivo:local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "HTTPS_PROXY": "http://127.0.0.1:8000"
  }
}

Com essa configuração, o Azure Functions é iniciado normalmente enquanto suas solicitações HTTP para as URLs observadas são roteadas pelo Dev Proxy.

Exemplo: testar um aplicativo mantendo outros não afetados

Ao desenvolver vários aplicativos simultaneamente, talvez você queira usar o Proxy de Desenvolvimento com apenas um deles. Desabilite o registro de proxy do sistema e defina a variável de ambiente apenas para o aplicativo de destino.

Inicie o Dev Proxy sem registrar o proxy do sistema.

devproxy --as-system-proxy false

Em um terminal separado, execute seu aplicativo com o proxy configurado:

$env:HTTPS_PROXY = "http://127.0.0.1:8000"
npm start
HTTPS_PROXY=http://127.0.0.1:8000 npm start

Outros aplicativos em seu computador continuam funcionando normalmente sem nenhuma interferência de proxy.

Executar várias instâncias de Proxy de Desenvolvimento

Ao definir asSystemProxy como false, você pode executar várias instâncias de Proxy de Desenvolvimento simultaneamente. Cada instância escuta em sua própria porta e rastreia seu próprio estado utilizando arquivos de estado individuais.

Iniciar várias instâncias

Inicie cada instância em uma porta diferente:

devproxy --as-system-proxy false --port 8000 --config-file devproxyrc-api1.json

Em outro terminal:

devproxy --as-system-proxy false --port 9000 --config-file devproxyrc-api2.json

Verificar o status das instâncias em execução

Para ver todas as instâncias em execução, use o status comando:

devproxy status

Parar uma instância específica

Para direcionar uma instância específica, use a opção --pid com o stop comando:

devproxy stop --pid 6456

Para interromper todas as instâncias em execução:

devproxy stop

Exibir logs de uma instância específica

Use a opção --pid com o logs comando:

devproxy logs --pid 6456

Se você executar devproxy logs sem --pid, o Dev Proxy mostrará logs da instância de proxy do sistema ou da instância iniciada mais recentemente, se nenhuma estiver registrada como o proxy do sistema. O Dev Proxy também imprime um aviso informando qual instância ele selecionou e lista as IDs de processo das outras instâncias em execução.

Observação

Somente uma instância de Proxy de Desenvolvimento pode ser registrada como o proxy do sistema por vez. Se você tentar iniciar uma nova instância com asSystemProxy definido como true enquanto outra instância de proxy do sistema já estiver em execução, o Proxy de Desenvolvimento bloqueará a inicialização.

Consulte também