我們有2個帶有NuGet代理存儲庫的Nexus SSO服務器。一個在我們的專用網絡環境(v3.0.0)中,另一個在具有互聯網訪問的DMZ(v3.0.1)內。SonaType Nexus NuGet代理服務器404轉發到另一個Nexus時
請求首先發送到私有Nexus服務器,該請求將請求轉發到DMZ中的Nexus服務器,然後該請求轉發到外部nuget.org存儲庫。所以基本上:
客戶端 - >私人代理 - > DMZ代理 - >互聯網。
使用此方法,客戶端得到的錯誤無法找到包。從私人代理服務器上的日誌中,我發現它將請求轉發給dmz代理服務器,如 http://dmzproxy/repository/NuGetRepository/FindPackagesById?id='angularjs' 但收到404未找到。
解決該問題,我試圖繞過直接從該服務器運行nuget.exe私人代理,具體做法是:
客戶端 - > DMZ代理 - >互聯網
這種方法的實際工作,並使用nuget.exe與-Verbosity詳細的,我可以看到,nuget.exe發送到DMZ代理一個略有不同的要求比私人代理的作用:
http://dmzproxy/repository/NuGetRepository/FindPackagesById()?id=「angularjs」
的COM通過Nexus發送的請求,你可以看到不同之處在於FindPackagesById之後的圓括號()。因此,爲了進行測試,我在瀏覽器窗口中複製/粘貼了兩個請求URL,實際上,沒有括號,我得到一個404,帶圓括號的我得到一個包提要頁面。
因此,當服務於NuGet時,Nexus可以使用圓括號,但在將請求轉發給另一個Nexus服務器時,似乎不適用它,從而導致404響應。