Proxy SonaType Nexus NuGet代理404转发到另一个Nexus时

Proxy SonaType Nexus NuGet代理404转发到另一个Nexus时,proxy,nuget,nexus,Proxy,Nuget,Nexus,我们有2台Nexus SSO服务器,带有NuGet代理存储库。一个在我们的专用网络环境(v3.0.0)中,另一个在DMZ(v3.0.1)中,可以访问internet 请求首先被发送到私有Nexus服务器,该服务器将请求转发到DMZ中的Nexus服务器,然后该服务器将请求转发到外部的nuget.org存储库。所以基本上: 客户端->专用代理->dmz代理->互联网 使用此方法时,客户端将出现一个无法找到包的错误。从私有代理上的日志中,我看到它将请求转发给dmz代理,如下所示 “angularjs”

我们有2台Nexus SSO服务器,带有NuGet代理存储库。一个在我们的专用网络环境(v3.0.0)中,另一个在DMZ(v3.0.1)中,可以访问internet

请求首先被发送到私有Nexus服务器,该服务器将请求转发到DMZ中的Nexus服务器,然后该服务器将请求转发到外部的nuget.org存储库。所以基本上:

客户端->专用代理->dmz代理->互联网

使用此方法时,客户端将出现一个无法找到包的错误。从私有代理上的日志中,我看到它将请求转发给dmz代理,如下所示 “angularjs” 但收到一个404未找到

解决此问题时,我试图通过直接从该服务器运行nuget.exe绕过专用代理,这将是:

客户端->dmz代理->互联网

此方法实际上是有效的,通过使用带有-Verbosity detailed的nuget.exe,我可以看到nuget.exe向dmz代理发送的请求与专用代理稍有不同:

“angularjs”

将其与Nexus发送的请求进行比较,您可以看到区别在于FindPackagesById后面的括号()。因此,为了进行测试,我在浏览器窗口中复制/粘贴了两个请求URL,实际上,没有括号,我得到了404,有括号,我得到了一个包提要页面


因此,Nexus在为NuGet服务时确实使用括号,但在将请求转发到另一台Nexus服务器时似乎没有应用括号,导致404响应。

在进一步测试并联系SonaType支持后,我发现Nexus 3.0.0和3.0.1确实不支持FindPackagesById请求?没有括号,即使这正是Nexus本身转发请求的方式

最新的Nexus版本(目前为3.2.1)虽然仍在转发不带括号的请求,但确实支持这两种方式。因此,将所有Nexus服务器更新为最新版本应该可以解决这个问题

在这个特定的组织中,更新说起来容易做起来难。因此,在此期间,我配置了一个具有重写规则的反向代理,它将请求从专用Nexus服务器转发到DMZ中的Nexus服务器,并将“FindPackagesById?”重写为“FindPackagesById()?”。在所有Nexus服务器更新之前,这不是一个理想的情况,而是一个临时解决方案