Estoy de acuerdo con la declaración de BillThor de que esto es más una convención que un estándar.
No sé el origen de estas variables, pero en el caso de HTTP en * nix, muchas convenciones parecen originarse en el comportamiento de la biblioteca libcurl HTTP y el programa curl de línea de comandos.
En https://curl.haxx.se/docs/manual.html hay una descripción de las variables de entorno relacionadas con el uso del proxy HTTP que entiende libcurl / curl:
VARIABLES DE ENTORNO
Curl lee y comprende las siguientes variables de entorno:
http_proxy, HTTPS_PROXY, FTP_PROXY
Deben configurarse para servidores proxy específicos del protocolo. El proxy general debe establecerse con
ALL_PROXY
Se establece una lista de nombres de host separados por comas que no deberían pasar por ningún proxy (solo un asterisco, '*' coincide con todos los hosts)
NO_PROXY
Si el nombre de host coincide con una de estas cadenas, o si el host está dentro del dominio de una de estas cadenas, las transacciones con ese nodo no se representarán.
Tenga en cuenta que http_proxy
se escribe en minúsculas como la única entre estas variables. Algunas bibliotecas / programas buscan nombres en minúsculas de estas variables, mientras que otros buscan nombres en mayúsculas. Para estar seguro, uno debe definir las versiones en minúsculas y mayúsculas de cada variable.
Otro problema es que la descripción citada de cómo se comparan los nombres de host NO_PROXY
no es precisa y no responde las siguientes preguntas:
- ¿Deben los valores ser nombres de dominio totalmente calificados (FQDN) que terminen con un punto como
foo.example.com.
o no?
- ¿Debería
foo.example.com
coincidir solo con este dominio o también debería coincidir con cualquier subdominio como bar.foo.example.com
? Si este último, ¿también debería coincidir con algún subdominio en algún subdominio como bar.baz.foo.example.com
?
- ¿Está
.foo.example.com
permitido (punto al principio) y, de ser así, ¿qué debería coincidir?
- ¿Se
*
permite el asterisco ( ) como parte del valor ( *.example.com
, *example.com
) y, de ser así, ¿cómo se trata?
La falta de especificación formal conduce a confusión y errores. Aquí hay que mencionar la biblioteca libproxy que tiene como objetivo proporcionar soporte correcto y consistente para la configuración del proxy. Desde la página de inicio del proyecto :
libproxy existe para responder la pregunta: dado un recurso de red, ¿cómo puedo acceder a él? Maneja todos los detalles, lo que le permite volver a la programación.
Otras lecturas: