Concordo com a afirmação de BillThor de que isso é mais uma convenção do que um padrão.
Eu não sei a origem dessas variáveis, mas no caso do HTTP no * nix, muitas convenções parecem se originar do comportamento da biblioteca HTTP libcurl e do programa de linha de comando curl.
Em https://curl.haxx.se/docs/manual.html, há uma descrição das variáveis de ambiente relacionadas ao uso do proxy HTTP que a libcurl / curl entende:
VARIÁVEIS AMBIENTAIS
O Curl lê e entende as seguintes variáveis de ambiente:
http_proxy, HTTPS_PROXY, FTP_PROXY
Eles devem ser definidos para proxies específicos de protocolo. O proxy geral deve ser definido com
ALL_PROXY
Uma lista separada por vírgula de nomes de host que não devem passar por nenhum proxy está definida (apenas um asterisco, '*' corresponde a todos os hosts)
NO_PROXY
Se o nome do host corresponder a uma dessas cadeias, ou se o host estiver no domínio de uma dessas cadeias, as transações com esse nó não serão enviadas por proxy.
Observe que http_proxy
está escrito em minúsculas como o único dentre essas variáveis. Algumas bibliotecas / programas procuram nomes em minúsculas dessas variáveis, enquanto outros procuram nomes em maiúsculas. Para estar seguro, deve-se definir as versões em minúsculas e maiúsculas de cada variável.
Outra questão é que a descrição citada de como os nomes de host são comparados NO_PROXY
não é precisa e não responde às seguintes perguntas:
- Os valores devem ser nomes de domínio totalmente qualificados (FQDN) , terminando assim com um ponto como
foo.example.com.
ou não?
- Deve
foo.example.com
corresponder apenas a este domínio ou também deve corresponder a qualquer subdomínio bar.foo.example.com
? Se este último também deve corresponder a qualquer subdomínio em qualquer subdomínio como bar.baz.foo.example.com
?
- É
.foo.example.com
permitido (ponto no início) e, em caso afirmativo, qual deve corresponder?
- O asterisco (
*
) é permitido como parte do valor ( *.example.com
, *example.com
) e, em caso afirmativo, como é tratado?
A falta de especificação formal leva a confusão e bugs. Aqui é preciso mencionar a biblioteca libproxy , que visa fornecer suporte correto e consistente para a configuração do proxy. Na página inicial do projeto :
O libproxy existe para responder à pergunta: Dado um recurso de rede, como eu o alcanço? Ele lida com todos os detalhes, permitindo que você volte à programação.
Leitura adicional: