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 결과는 다른 클라이언트가 같은 경로를 선택했다는 것을 증명하지 않으며, 우회 결정에는 여전히 직접 네트워크 도달 가능성이 필요합니다.

관련 글