Compatibilidade de NO_PROXY entre curl, .NET e contêineres
Transforme uma política compartilhada de roteamento direto em configuração específica de cada cliente com um pequeno conjunto de destinos representativos.
Uma equipe coloca uma única string de desvio num arquivo de ambiente compartilhado. O curl vai direto, outra aplicação usa o proxy e um contêiner se comporta de modo diferente outra vez. O arquivo compartilhado distribuiu os mesmos caracteres. Não distribuiu um parser compartilhado.
O objeto durável é a política: quais destinos devem ser diretos e sob quais condições? Mantenha isso separado da string de que cada programa precisa.
Escreva primeiro as rotas esperadas
Use endereços representativos, incluindo casos de fronteira e não apenas sucessos fáceis:
| Forma do destino | Pergunta para o dono da política |
|---|---|
| Domínio pai | Ele deve ser desviado, ou apenas os filhos? |
| Um subdomínio | Ele herda a mesma rota? |
| Um IP privado literal | Esse endereço é acessível diretamente a partir deste cliente? |
| O mesmo serviço sob um nome de host | As requisições por nome e por endereço devem concordar? |
| Outra porta do serviço | A exceção cobre o host ou um único listener? |
Em seguida, identifique os consumidores: o daemon que baixa uma imagem, o programa dentro do contêiner, uma biblioteca HTTP de uma linguagem e um navegador interativo podem ser entradas separadas. Uma configuração de proxy do cliente Docker pode preencher os valores de ambiente do contêiner sem obrigar cada cliente interno a implementar as mesmas regras de correspondência.
Traduza em vez de copiar às cegas
Um exemplo documentado de diferença real é a fronteira do domínio pai. A exclusão de domínio do curl abrange o domínio nomeado e os filhos correspondentes. A política de ambiente do .NET distingue o nome puro da forma de subdomínio com ponto inicial. Uma regra universal de „sempre adicionar um ponto inicial“ não consegue expressar as duas políticas de forma confiável.
O suporte a faixas de IP também depende do consumidor e da sua versão. Uma máquina com um curl autônomo novo ainda pode executar uma aplicação ligada a uma libcurl mais antiga, ou um cliente que usa outra biblioteca por completo. A versão do sistema operacional não é um inventário completo de clientes.
Para cada consumidor, registre a interface de configuração suportada e a menor expressão das rotas pretendidas. Uma lista curta e explícita de hosts pode ser melhor do que um padrão esperto cujo significado ninguém consegue explicar.
Mantenha a evidência de configuração separada da evidência de conexão
Uma configuração analisada ou uma API de decisão de roteamento pode mostrar o que o programa selecionou. O resultado de uma requisição mostra então se essa rota era utilizável. No .NET, HttpClient.DefaultProxy.IsBypassed fornece essa verificação do lado da configuração quando o proxy padrão é a política em uso. Não diagnostique um serviço direto inacessível como falha do parser de desvio só porque a requisição atingiu o tempo limite.
Mantenha os destinos de fronteira ao atualizar um cliente ou uma imagem base. Eles tornam visíveis futuras mudanças de compatibilidade sem exigir que toda a equipe redescubra por que o arquivo contém duas entradas de domínio parecidas.