HttpClient のドキュメント化された環境プロキシポリシーでは、example.internal と .example.internal の一致の仕方が異なります。ベア名は親ホストを選び、先頭ドット形式はそのサブドメインを選びます。

両方を直接接続にする場合は、起動環境に両方を含めます。

export no_proxy='example.internal,.example.internal'

これらは意図する既存のバイパス一覧に統合してください。変数名が大文字と小文字を区別するシステムでは、.NET は小文字のプロキシ環境変数を先に確認し、その後に大文字を確認するため、古い no_proxy が NO_PROXY より優先されることがあります。

アプリケーション内では、宛先への HTTP 要求を送信せずに既定のセレクターを調べられます。

foreach (var host in new[] {
    "example.internal", "api.example.internal", "other.internal"
})
{
    var uri = new Uri("https://" + host + "/");
    Console.WriteLine($"{host}: bypass={HttpClient.DefaultProxy.IsBypassed(uri)}");
}

この断片は System と System.Net.Http を使用します。アプリケーションが別の IWebProxy を明示的に指定している場合は、代わりに実際のハンドラープロキシを調べてください。既定のプロキシが初期化される前に、意図する環境を設定してください。

これらは .NET のドキュメント化されたルールです。同じ文字列を使った curl の結果は、別のクライアントが同じ経路を選んだことを証明しません。また、バイパスの判断には依然として直接のネットワーク到達性が必要です。

関連記事