2017-02-20 10 views
0

У нас есть 2 сервера SSO Nexus с репозиториями прокси NuGet. Один из них находится в нашей частной сетевой среде (v3.0.0), другой находится в DMZ (v3.0.1) с доступом в Интернет.SonaType Nexus NuGet proxy 404 при переадресации на другой Nexus

Запрос сначала отправляется на частный сервер Nexus, который перенаправляет запрос на сервер Nexus в DMZ, который, в свою очередь, перенаправляет запрос во внешний репозиторий nuget.org. Итак, в основном:

клиент -> частный прокси -> dmz proxy -> интернет.

Используя этот метод, клиент получит ошибку Не удается найти пакет. Из журналов на частном прокси я вижу, что он отправляет запрос в прокси dmz как http://dmzproxy/repository/NuGetRepository/FindPackagesById?id= 'angularjs' , но получает 404 не найден.

Устранение проблемы, я попытался обойти частный прокси-сервер, запустив nuget.exe прямо с этого сервера, который будет:

клиент -> ДЗ прокси -> Интернет

Этот метод действительно работает, и с помощью nuget.exe с -verbosity подробно, я могу видеть, что nuget.exe посылает несколько иной запрос на ДМЗ прокси, чем частный прокси делает:

http://dmzproxy/repository/NuGetRepository/FindPackagesById()?id= «angularjs»

Com что с запросом, отправленным 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 на сервер Nexus в DMZ и перезаписывает «FindPackagesById?». на «FindPackagesById()?». Не идеальная ситуация, а временное временное решение до тех пор, пока не будут обновлены все серверы Nexus.

Смежные вопросы