http_proxy
私は両方の状況に遭遇しましたHTTP_PROXY
。両方の形式は同じですか?一方が他方よりも優先されますか?
答え1
アプリケーションで環境変数を使用する前に正式な意味を割り当てる中央機関はありません。POSIXPATH
いくつかの変数(、、、...)の意味が定義されておりTERM
、他の一般的に使用されているいくつかの変数は非標準の方法ですべて大文字でリストされています。http_proxy
そして友達はそれらの一つではありません。
デフォルトでは、多くのアプリケーションで使用されているすべての一般的な環境変数とは異なり、http_proxy
およびhttps_proxy
は通常小文字です。大文字だけ認識するプログラムは覚えておらず、大文字だけ認識するプログラムも見たことがありません。多くのプログラムは、lynx、wget、curl、perl LWP、perl WWW :: Search、python urllib / urllib2などを含む小文字の変数のみを使用します。したがって、これらの変数の場合、正しい形式は小文字です。ftp_proxy
no_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)). [..]
Python
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
ほとんどのアプリケーションは大文字変数をサポートし、他のアプリケーションは小文字変数をサポートしているようです。curl
CGI-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- 小文字のプロキシ設定のみを使用してください!