Azure SDK for .NET を使用するときにプロキシを構成する
組織でインターネット リソースにアクセスするためにプロキシ サーバーを使用する必要がある場合は、Azure SDK for .NET クライアント ライブラリを使用するために一部の構成が必要です。 構成が完了すると、HTTP 操作に使用される基になる HttpClient
インスタンスにプロキシが適用されます。
プロキシは、コードまたは環境変数を使用して構成できます。 選択する方法は、目的の動作によって異なります。 現在のプロセス内で作成されたすべてのサービス クライアントにプロキシをグローバルに適用する場合は、適切な環境変数を設定します。 または、サービス クライアントに設定を選択的に適用するように、コードを使用してプロキシを構成します。
重要
次の手順は、Azure.Core に依存する ライブラリにのみ適用。
コードを使用して構成する
プログラムによってプロキシを構成するには、次の手順を実行します。
Proxy
プロパティが設定されているHttpClientHandler オブジェクトを作成します。HttpClientHandler
インスタンスを受け入れるHttpClientTransport
オブジェクトに Transport プロパティが設定されているサービス クライアント オプション オブジェクトを作成します。- サービス クライアント オプション オブジェクトをサービス クライアント コンストラクターに渡します。
Azure Key Vault シークレット ライブラリを例として使用すると、次のコードが得られます。
using System.Net;
using Azure.Core.Pipeline;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using HttpClientHandler handler = new()
{
Proxy = new WebProxy(new Uri("<proxy-url>")),
};
SecretClientOptions options = new()
{
Transport = new HttpClientTransport(handler),
};
SecretClient client = new(
new Uri("https://<key-vault-name>.vault.azure.net/"),
new DefaultAzureCredential(),
options);
環境変数を使用して構成する
次の表に、使用するプロキシを構成するために設定できる環境変数のインベントリを示します。
環境変数 | 目的 |
---|---|
HTTP_PROXY または http_proxy |
HTTP 要求で使用されるプロキシ サーバー。 |
HTTPS_PROXY または https_proxy |
HTTPS 要求で使用されるプロキシ サーバー。 |
ALL_PROXY または all_proxy |
HTTP 要求と HTTPS 要求の両方に使用されるプロキシ サーバー。 |
NO_PROXY または no_proxy |
プロキシから除外するホスト名のコンマ区切りのリスト。 |
GATEWAY_INTERFACE |
アプリが Common Gateway Interface (CGI) 環境で実行されていることを示します。 値の例: CGI/1.1 |
これらの環境変数の処理方法の詳細については、 コードを参照してください。 次の動作に注意してください。
- 前の表の各環境変数 (
GATEWAY_INTERFACE
を除く) は、小文字で定義することもできます。 小文字の形式は大文字の形式よりも優先されます。' http_proxy
とGATEWAY_INTERFACE
の両方が未定義の場合は、HTTP_PROXY
が使用されます。ALL_PROXY
は、HTTP または HTTPS プロキシが未定義の場合にのみ考慮されます。- プロトコル固有の環境変数は、
ALL_PROXY
よりも優先されます。
プロキシ サーバーの URL は、 http[s]://[username:password@]<ip_address_or_hostname>:<port>/
形式になります。ここで、 username:password
の組み合わせは省略可能です。 プロキシ サーバーの IP アドレスまたはホスト名、ポート、資格情報を取得するには、ネットワーク管理者に問い合わせてください。
次の例は、コマンド シェル (Windows) 環境と bash (Linux/macOS) 環境で適切な環境変数を設定する方法を示しています。 適切な環境変数を設定すると、Azure SDK for .NET ライブラリで実行時にプロキシ サーバーが使用されます。
rem Non-authenticated HTTP server:
set HTTP_PROXY=http://10.10.1.10:1180
rem Authenticated HTTP server:
set HTTP_PROXY=http://username:password@10.10.1.10:1180
rem Non-authenticated HTTPS server:
set HTTPS_PROXY=https://10.10.1.10:1180
rem Authenticated HTTPS server:
set HTTPS_PROXY=https://username:password@10.10.1.10:1180
.NET