2017-02-20 22 views
0

NuGetプロキシリポジトリを持つ2つのNexus SSOサーバがあります。 1つはプライベートネットワーク環境(v3.0.0)、もう1つはDMZ(v3.0.1)のインターネットアクセスです。SonaType Nexus別のNexusに転送する場合のNuGetプロキシ404

DMZ内のNexusサーバに要求を転送するプライベートNexusサーバに要求が最初に送信され、要求は外部のnuget.orgリポジトリに転送されます。したがって、基本的に:

クライアント - >プライベートプロキシ - > dmzプロキシ - >インターネット。

この方法を使用すると、クライアントにgetが見つかりません。パッケージを見つけることができません。プライベートプロキシのログから、私はdmzプロキシに要求を http://dmzproxy/repository/NuGetRepository/FindPackagesById?id= 'angularjs' として転送しますが、404が見つからないことがわかります。問題のトラブルシューティング

は、私がされるであろう、まっすぐそのサーバからnuget.exe実行することにより、プライベートプロキシをバイパスしてみました:

クライアント - > DMZプロキシ - >インターネット

この方法は、実際に動作します、

http://dmzproxy/repository/NuGetRepository/FindPackagesById()?id=「angularjs」

コム:かつ詳細な-verbosityでnuget.exe使用してから、私はそのnuget.exeがプライベートプロキシが行うよりも、DMZプロキシにわずかに異なる要求を送信見ることができます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サーバがアップデートされるまでの一時的な解決策です。

関連する問題