HTTP_PROXY, HTTPS_PROXY 및 NO_PROXY 환경 변수는 표준입니까?


25

인터넷상의 리소스에 연결하기 위해 어떤 프록시를 거쳐야 하는지를 결정하기 위해 많은 환경 프로그램이 이러한 환경 변수를 읽도록 고안된 것 같습니다. 이러한 프로그램에는 자체 프록시 설정이있을 수도 있지만 설정되지 않은 경우 이러한 환경 변수를 행복하게 사용합니다.

  • HTTP_PROXY
  • HTTPS_PROXY
  • NO_PROXY

나는 단지 알고 싶다 :

  • 이러한 환경 변수는 표준입니까?
  • 이러한 환경 변수의 사용을 권장하는 서면 사양 (OS 제조업체가 제공 할 수 있습니까?)이 있습니까?

1
no_proxy는 모르지만 http_proxy (소문자 소문자)가 표준입니다
Uwe Burger

@UweBurger 아마도 당신은 어떤 프로그램이 그것을 사용하는지 기술 할 수있다. 그리고 그것은 질문자에게도 간다. 나는 그것이 wget에서 사용되는 것을 보았다
barlop

답변:


18

본인은 이것이 표준보다 관습 이라는 BillThor의 진술에 동의합니다 .
나는 이러한 변수의 기원을 모르지만 * nix의 HTTP의 경우 많은 규칙이 libcurl HTTP 라이브러리 및 curl 명령 행 프로그램의 동작에서 비롯된 것 같습니다 .

에서 https://curl.haxx.se/docs/manual.html libcurl에서 / 컬 이해 HTTP 프록시 사용과 관련된 환경 변수의 설명이있다 :

환경 변수

컬은 다음 환경 변수를 읽고 이해합니다.
http_proxy, HTTPS_PROXY, FTP_PROXY

프로토콜 별 프록시에 대해 설정해야합니다. 일반 프록시는
ALL_PROXY

프록시를 거치지 않아야하는 쉼표로 구분 된 호스트 이름 목록이 설정되어 있습니다 ( '*'는 모든 호스트와 일치 함).
NO_PROXY

호스트 이름이이 문자열 중 하나와 일치하거나 호스트가이 문자열 중 하나의 도메인 내에 있으면 해당 노드와의 트랜잭션이 프록시되지 않습니다.

제발 통지 http_proxy이러한 변수 중 하나로서 소문자 철자. 일부 라이브러리 / 프로그램은 이러한 변수의 소문자 이름을 찾는 반면 다른 라이브러리 / 프로그램은 대문자 이름을 찾습니다. 안전 하려면 각 변수의 소문자 및 대문자 버전을 모두 정의해야합니다.

또 다른 문제는 호스트 이름이 어떻게 일치하는지에 대한 설명이 NO_PROXY정확하지 않으며 다음 질문에 대답하지 않는다는 것입니다.

  • 값이 FQDN (정규화 된 도메인 이름) 이어야 하므로 점으로 끝나지 foo.example.com.않아야합니까?
  • foo.example.com이 하나의 도메인 만 일치 해야합니까 bar.foo.example.com? 또는 ? 와 같은 하위 도메인과도 일치해야합니다 . 후자가 그렇다면 bar.baz.foo.example.com? 와 같은 하위 도메인의 하위 도메인과도 일치해야합니다 .
  • 가요 .foo.example.com(시작 부분에 점) 허용 그렇다면 그것은 무엇과 일치 하는가?
  • 별표 ( *)가 값 ( *.example.com, *example.com)의 일부로 허용 됩니까? 그렇다면 별표 ( ) 는 어떻게 처리됩니까?

공식적인 사양이 부족하면 혼란과 버그가 발생합니다. 여기 프록시 구성에 대한 정확하고 일관된 지원을 제공하는 libproxy 라이브러리 에 대해 언급 해야 합니다. 프로젝트의 홈에서 페이지 :

libproxy는 질문에 대답하기 위해 존재합니다. 네트워크 리소스가 주어지면 어떻게 접근 할 수 있습니까? 모든 세부 사항을 처리하여 프로그래밍으로 돌아갈 수 있습니다.

더 읽을 거리 :


libproxy는 제기 한 질문에 대해 무엇을 말해야합니까? 내가 관심있는 것 : ".foo.example.com이 foo.example.com과 일치해야합니까?"
Robin Winslow


13

이것은 표준보다 더 많은 규칙입니다. 실제로 연결하는 하나 이상의 프로토콜 핸들러 라이브러리에서 지원 될 수 있습니다. Java는 프로토콜 라이브러리에서 유사한 특성을 사용합니다.

공통 규칙을 이해하고 사용하면 개발이 훨씬 간단 해집니다. 또한 최소한의 놀라움의 원칙을 구현하고 프로그램을 더 가능성있게 just work만듭니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.