使用適用於 .NET 的 Azure SDK 時設定 Proxy
如果您的組織需要使用 Proxy 伺服器來存取因特網資源,則需要某些設定才能使用適用於 .NET 的 Azure SDK 用戶端連結庫。 設定之後,Proxy 會套用至用於 HTTP 作業的基礎 HttpClient
實例。
您可以透過程式代碼或環境變數來設定 Proxy。 您選擇的方法取決於所需的行為。 如果您希望 Proxy 全域套用至目前進程內建立的所有服務用戶端,請設定適當的環境變數。 或者,透過程式代碼設定 Proxy 以選擇性地將設定套用至服務用戶端。
重要
下列指示僅適用於 具有 Azure.Core 相依性的連結庫。
使用程式代碼設定
若要以程式設計方式設定 Proxy,請完成下列步驟:
- 建立 HttpClientHandler 已設定屬性的物件
Proxy
。 - 建立服務客戶端選項物件,其 Transport 屬性設定為
HttpClientTransport
接受HttpClientHandler
實例的物件。 - 將服務客戶端選項對象傳遞至服務用戶端建構函式。
使用 Azure 金鑰保存庫 Secrets 連結庫作為範例,您有下列程式代碼:
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);
使用環境變數進行設定
下表提供可設定 Proxy 以供使用的環境變數清查。
環境變數 | 目的 |
---|---|
HTTP_PROXY 或 http_proxy |
HTTP 要求上使用的 Proxy 伺服器。 |
HTTPS_PROXY 或 https_proxy |
HTTPS 要求中使用的 Proxy 伺服器。 |
ALL_PROXY 或 all_proxy |
用於 HTTP 和 HTTPS 要求的 Proxy 伺服器。 |
NO_PROXY 或 no_proxy |
要從 Proxy 中排除的主機名逗號分隔清單。 |
GATEWAY_INTERFACE |
指出應用程式正在通用閘道介面 (CGI) 環境中執行。 範例值:CGI/1.1 |
如需如何處理這些環境變數的深入瞭解,請參閱 程序代碼。 請注意下列行為:
- 上述數據表中的每個環境變數,除了
GATEWAY_INTERFACE
之外,也可以定義為小寫。 小寫表單的優先順序高於大寫表單。 - 如果與
GATEWAY_INTERFACE
都http_proxy
未定義,HTTP_PROXY
則會使用 。 ALL_PROXY
只有在未定義 HTTP 或 HTTPS Proxy 時才會考慮。- 通訊協定特定的環境變數優先於
ALL_PROXY
。
Proxy 伺服器 URL 的格式 http[s]://[username:password@]<ip_address_or_hostname>:<port>/
為 ,其中組合是選擇性的 username:password
。 若要取得 Proxy 伺服器的 IP 位址或主機名、埠和認證,請參閱您的網路管理員。
下列範例示範如何在命令殼層 (Windows) 和bash (Linux/macOS) 環境中設定適當的環境變數。 設定適當的環境變數會導致 Azure SDK for .NET 連結庫在運行時間使用 Proxy 伺服器。
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