Поделиться через


Настройка прокси-сервера при использовании пакета SDK Azure для .NET

Если вашей организации требуется использовать прокси-сервер для доступа к интернет-ресурсам, для использования пакета SDK Azure для клиентских библиотек .NET требуется определенная конфигурация. После настройки прокси-сервер применяется к базовому HttpClient экземпляру, используемому для операций HTTP.

Прокси-сервер можно настроить с помощью кода или переменной среды. Выбор подхода зависит от требуемого поведения. Задайте соответствующую переменную среды, если вы хотите, чтобы прокси-сервер применял глобально ко всем клиентам служб, созданным в текущем процессе. Кроме того, настройте прокси-сервер через код для выборочного применения параметров к клиентам служб.

Внимание

Следующие инструкции применяются только к библиотекам с зависимостью от Azure.Core.

Настройка использования кода

Чтобы программно настроить прокси-сервер, выполните следующие действия.

  1. HttpClientHandler Создайте объект, свойство которого Proxy задано.
  2. Создайте объект параметров клиента службы, свойство которого Transport задано HttpClientTransport для объекта, принимаюющего HttpClientHandler экземпляр.
  3. Передайте объект параметров клиента службы конструктору клиента службы.

Используя библиотеку секретов 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). Установка соответствующей переменной среды приводит к использованию прокси-сервера в среде выполнения пакета SDK Azure для библиотек .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