質問: http_proxy、https_proxy、no_proxy環境変数は標準ですか? 多くのプログラムは、これらの環境変数を読み取って、インターネット上のリソースに接続するために経由するプロキシを決定するように設計されているようです。これらのプログラムには独自の個別のプロキシ設定がある場合もありますが、これらが設定されていない場合は、これらの環境変数を喜んで使用します... http_proxy https_proxy no_proxy ただ知りたいだけです: これらの環境変数は標準ですか? これらの環境変数の使用を推奨する仕様書(osの製造元によるものか?)はありますか?
回答: これは標準というより慣習であるというbillthorの声明に同意します。 これらの変数の起源はわかりませんが、* nixでのhttpの場合、多くの規則は libcurl httpライブラリとcurlコマンドラインプログラムの動作に由来するようです。 https://curl.haxx.se/docs/manual.html には、libcurl/curlが理解できるhttpプロキシの使用に関連する環境変数の説明があります。 環境変数 curlは次の環境変数を読み取って理解します。 http_proxy, https_proxy, ftp_proxy プロトコル固有のプロキシに対して設定する必要があります。一般的なプロキシを設定する必要があります all_proxy プロキシを経由してはならないホスト名のコンマ区切りのリストが設定されている(アスタリスク、「*」のみがすべてのホストに一致) no_proxy ホスト名がこれらの文字列のいずれかに一致する場合、またはホストがこれらの文字列のいずれかのドメイン内にある場合、そのノードとのトランザクションはプロキシされません。 http_proxyは、これらの変数の1つだけであるため、小文字のスペルになっていることに注意してください。一部のライブラリ/プログラムはこれらの変数の小文字の名前を探しますが、他のライブラリ/プログラムは大文字の名前を探します。 safeであるためには、各変数の小文字バージョンと大文字バージョンの両方を定義する必要があります。もう1つの問題は、ホスト名がno_proxyと照合される方法の引用された説明が正確ではなく、次の質問に回答しないことです。 値は 完全修飾ドメイン名(fqdn) である必要があります。つまり、foo.example.com.のようなドットで終わるかどうか。 foo.example.comはこの1つのドメインのみに一致する必要がありますか、それともbar.foo.example.comなどのサブドメインにも一致する必要がありますか?後者の場合、bar.baz.foo.example.comなどのサブドメイン内のサブドメインにも一致する必要がありますか? .foo.example.com(最初のドット)は許可されていますか?許可されている場合、何に一致させる必要がありますか? アスタリスク(*)は値(*.example.com、*example.com)の一部として許可されますか?許可されている場合、どのように扱われますか? 正式な仕様がないと、混乱やバグが発生します。ここでは、プロキシ構成の正確で一貫したサポートを提供することを目的としたlibproxyライブラリについて言及する必要があります。プロジェクトのホームから ページ : libproxyは、質問に答えるために存在します:ネットワークリソースが与えられた場合、どのようにしてそれに到達しますか?すべての詳細を処理し、プログラミングに戻ることができます。 参考文献: curlに対して発生した問題– no_proxy環境変数の構文とセマンティクスを文書化してください。 pythonの問題– rllib:先頭のドットが正しくないno_proxy変数値 および関連so質問– python 2.7.13はno_proxyを尊重せず、urllib2を作成します.urlopen()エラー、「トンネル接続に失敗しました:403 forbidden」