2017-02-20 1 views
0

NuGet 프록시 저장소가있는 Nexus SSO 서버가 2 대 있습니다. 하나는 사설망 환경 (v3.0.0)이고 다른 하나는 DMZ (v3.0.1)에 인터넷 액세스가 가능합니다.SonaType Nexus NuGet 프록시 404 (다른 Nexus로 전달할 때)

DMZ에있는 Nexus 서버로 요청을 전달하는 개인 Nexus 서버로 요청이 먼저 전송되고 요청을 외부 nuget.org 저장소로 전달합니다. 기본적으로 :

클라이언트 -> 개인 프록시 -> dmz proxy -> internet.

이 방법을 사용하면 클라이언트에서 패키지를 찾을 수 없습니다 오류가 발생합니다. 개인 프록시의 로그에서 dmz 프록시에 요청을 http://dmzproxy/repository/NuGetRepository/FindPackagesById?id= 'angularjs' 으로 전달하지만 404를 찾을 수 없음을 확인했습니다. 인터넷

이 방법은 실제로 작동

> -> DMZ 프록시 -

클라이언트 :

이 문제를 해결, 나는 것이 바로 해당 서버에서 nuget.exe를 실행하여 개인 프록시를 우회하는 시도

http://dmzproxy/repository/NuGetRepository/FindPackagesById()?id= 'AngularJS와'

컴 : 및 -Verbosity 상세한와 nuget.exe 사용하는, 그 nuget.exe 민간 프록시보다 비무장 지대 프록시 약간 다른 요청을 보냅니다 볼 수 있습니다 Nexus에서 보낸 요청에 따라 FindPackagesById 다음에 괄호()가 있다는 것을 알 수 있습니다. 따라서 테스트를 위해 두 요청 URL을 모두 브라우저 창에 복사/붙여 넣었고 실제로 괄호없이 404를 얻었고 괄호로 패키지 피드 페이지를 얻습니다.

따라서 Nexus는 NuGet을 제공 할 때 괄호로 작동하지만 다른 Nexus 서버로 요청을 전달할 때 적용되지 않아 404 응답이 발생합니다.

답변

0

SonaType 지원을 추가로 테스트하고 연락을 취한 후 Nexus 3.0.0 및 3.0.1이 실제로 FindPackagesById를 통한 요청을 지원하지 않는다는 것을 발견했습니다. 괄호없이 Nexus 자체가 전달하는 방식과 정확히 일치합니다.

최신 Nexus 버전 (현재 3.2.1)은 괄호없이 요청을 계속 전달하지만 두 가지 방법을 모두 지원합니다. 따라서 모든 Nexus 서버를 최신 버전으로 업데이트하면이 문제가 해결됩니다.

이 특정 조직 내에서 업데이트가 완료된 것보다 쉽습니다. 그래서 그동안 개인 Nexus 서버의 요청을 DMZ의 Nexus 서버로 전달하고 "FindPackagesById?"를 다시 작성하는 다시 쓰기 규칙을 사용하여 역방향 프록시를 구성했습니다. "FindPackagesById()?"로 변경하십시오. 이상적인 상황은 아니지만 모든 Nexus 서버가 업데이트 될 때까지 임시 솔루션으로 작동합니다.

관련 문제