HTTP_PROXY 환경 변수의 "올바른" 형식은 무엇입니까? 뚜껑이 있든 없든?

HTTP_PROXY 환경 변수의 "올바른" 형식은 무엇입니까? 뚜껑이 있든 없든?

http_proxy나는 두 가지 상황을 모두 겪었습니다 HTTP_PROXY. 두 형식이 동일합니까? 하나가 다른 것보다 우선합니까?

답변1

애플리케이션에서 환경 변수를 사용하기 전에 공식적인 의미를 할당하는 중앙 기관이 없습니다.POSIXPATH일부 변수( , , ...)의 의미가 정의되어 있으며 TERM, 기타 일반적으로 사용되는 여러 변수는 비표준 방식으로 모두 대문자로 나열됩니다. http_proxy그리고 친구는 그들 중 하나가 아닙니다.

기본적으로 많은 애플리케이션에서 사용되는 모든 일반 환경 변수와 달리 http_proxy, https_proxy및 는 일반적으로 소문자입니다. 대문자만 인식하는 프로그램은 기억나지 않고, 대문자만 인식하는 프로그램도 본 적이 없습니다. 많은 프로그램은 lynx, wget, 컬, perl LWP, perl WWW::Search, python urllib/urllib2 등을 포함하여 소문자 변수만 사용합니다. 따라서 이러한 변수의 경우 올바른 형식은 소문자입니다.ftp_proxyno_proxy

소문자 이름은 적어도CERN libwww 2.151994년 3월(이것을 찾아주신 Stéphane Chazelas에게 감사드립니다). 당시에도 이례적이었던 소문자를 선택하게 된 계기가 무엇인지 모르겠습니다.

답변2

표준은 없으며 애플리케이션에 따라 대문자 및 소문자 버전이 사용됩니다(HTTPS_PROXY, ALL_PROXY, NO_PROXY 참조).

예를 들어:

곱슬

ENVIRONMENT VARIABLES

  Curl reads and understands the following environment variables:

        http_proxy, HTTPS_PROXY, FTP_PROXY

  They should be set for protocol-specific proxies. General proxy should be
  set with

        ALL_PROXY

  A comma-separated list of host names that shouldn't go through any proxy is
  set in (only an asterisk, '*' matches all hosts)

        NO_PROXY

자식

http.proxy
   Override the HTTP proxy, normally configured using the http_proxy, https_proxy, 
   and all_proxy environment variables (see curl(1)). [..]

파이썬

urllib.request.getproxies()소문자 및 대문자 변형이 지원됩니다.

또한 보안 문제도 언급합니다.

환경 변수 REQUEST_METHOD가 설정된 경우(일반적으로 스크립트가 CGI 환경에서 실행되고 있음을 나타냄) 환경 변수 HTTP_PROXY(대문자 _PROXY)는 무시됩니다. 이는 클라이언트가 "Proxy:" HTTP 헤더를 사용하여 이 변수를 주입할 수 있기 때문입니다. CGI 환경에서 HTTP 프록시를 사용해야 하는 경우 ProxyHandler를 명시적으로 사용하거나 변수 이름이 소문자인지(또는 최소한 _proxy 접미사가 있는지) 확인하세요.


일부 애플리케이션에서는 NO_PROXY별표/IP 범위를 포함할 수 있지만 다른 애플리케이션에서는 그렇지 않습니다.


그래서

export https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy NO_PROXY=$no_proxy

귀하의 요구 사항을 충족해야 합니다.

답변3

대부분의 응용 프로그램은 대문자 변수를 지원하는 반면 다른 응용 프로그램은 소문자 변수를 지원하는 것 같습니다. curlCGI-BIN 또는 PHP 유형 환경에서 HTTP 헤더를 통해 설정할 수 있기 때문에 HTTP_PROXY에 대한 지원을 제거함으로써 혼란이 발생한다고 생각합니다 . Proxy:컬의 소스 코드:

https://github.com/curl/curl/blob/30e7641d7d2eb46c0b67c0c495a0ea7e52333ee2/lib/url.c#L2250-L2266

GitLab 블로그 게시물은 광기를 설명합니다.

https://about.gitlab.com/blog/2021/01/27/we-need-to-talk-no-proxy/

답변4

WGET- 소문자 프록시 설정만 사용하세요!

관련 정보