다음을 통해 공유


.NET용 Azure SDK를 사용할 때 프록시 구성

조직에서 인터넷 리소스에 액세스하기 위해 프록시 서버를 사용해야 하는 경우 .NET 클라이언트 라이브러리용 Azure SDK를 사용하려면 일부 구성이 필요합니다. 구성되면 프록시가 HTTP 작업에 사용되는 기본 HttpClient 인스턴스에 적용됩니다.

프록시는 코드를 통해 또는 환경 변수를 통해 구성할 수 있습니다. 선택하는 방법은 원하는 동작에 따라 달라집니다. 프록시를 현재 프로세스 내에서 만든 모든 서비스 클라이언트에 전역적으로 적용하려면 적절한 환경 변수를 설정합니다. 또는 코드를 통해 프록시를 구성하여 서비스 클라이언트에 설정을 선택적으로 적용합니다.

Important

다음 지침은 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 앱이 CGI(Common Gateway Interface) 환경에서 실행 중임을 나타냅니다. 예제 값: 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) 환경에서 적절한 환경 변수를 설정하는 방법을 보여 줍니다. 적절한 환경 변수를 설정하면 .NET 라이브러리용 Azure SDK가 런타임에 프록시 서버를 사용합니다.

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