HTTP_PROXY、HTTPS_PROXY、およびNO_PROXY環境変数は標準ですか?


24

多くのプログラムは、これらの環境変数を読み取って、インターネット上のリソースに接続するために通過するプロキシを決定するように設計されているようです。これらのプログラムには独自の個別のプロキシ設定もありますが、設定されていない場合は、これらの環境変数を喜んで使用します...

  • HTTP_PROXY
  • HTTPS_PROXY
  • NO_PROXY

ただ知りたいだけです:

  • これらの環境変数は標準ですか?
  • これらの環境変数の使用を推奨する文書化された仕様(OSメーカーによるものかもしれませんか)はありますか?

1
私は標準ですhttp_proxyに(書かれた小文字)をno_proxyを知らない
ウヴェ・バーガー

@UweBurgerは、おそらくどのプログラムがそれを使用しているかを述べることができます。wgetで使用されているのを見た
-barlop

回答:


17

これは標準というよりも慣習であるというBillThorの声明に同意します。
これらの変数の起源はわかりませんが、* nixでのHTTPの場合、多くの規則はlibcurl HTTPライブラリとcurlコマンドラインプログラムの動作に由来するようです。

https://curl.haxx.se/docs/manual.html libcurlの/カールが理解するHTTPプロキシの使用に関連する環境変数の説明があります:

環境変数

Curlは次の環境変数を読み取り、理解します。
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に一致するかどうか」
ロビンウィンスロー


13

これは標準というよりも慣習です。実際に接続を行う1つ以上のプロトコルハンドラライブラリによってサポートされる可能性があります。Javaは、プロトコルライブラリで同様のプロパティを使用します。

一般的な規則を理解して使用すると、開発がはるかに簡単になります。それはまた、最も驚きのない原則を実装し、プログラムをより可能にするのを助けますjust work

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.