Я пытаюсь использовать nginx в качестве прокси-сервера для кэширования npm.У меня проблемы с получением файлов tgz.Каждый раз, когда я пытаюсь установить пакеты через npm, устанавливаем --verbose.NPM отправляет список файлов из http: /// repository / npm-proxy / angular, но затем пытается извлечь файлы tgz напрямую из https://registry.npmjs.org. Посмотрите журнал:
npm http fetch GET 200 http://<my_ip>/repository/npm-proxy/angular 66ms
npm http fetch GET 200 https://registry.npmjs.org/angular/-/angular-1.6.9.tgz 91ms
У меня естьустановить реестр в .npmrc следующим образом:
registry=http://<my_ip>/repository/npm-proxy/
Кроме того, все ссылки на файлы tgz (tarballs) в ответ на эту ссылку (http: /// repository / npm-proxy / angular) былиобновляется в соответствии с моим ip, используя sub_filter Nginx, поэтому я предполагаю, что npm будет использовать обновленные ссылки для извлечения файлов tgz.Но нет, он использует https://registry.npmjs.org. Я тестировал это поведение с различными проектами, результат идентичен.
NPM пытается отправить информацию аудита на мой ip, в случае неудачи он пытается использовать внешний реестр.
npm http fetch POST 404 http://<my_ip>/-/npm/v1/security/audits/quick 16ms
npm http fetch POST 200 https://registry.npmjs.org/-/npm/v1/security/audits/quick 316ms
Но на стороне nginx я не вижу запросов, относящихся к тарболам.
Моя конфигурация nginx здесь. https://pastebin.com/4m6MMQXk
Почему npm пытается получить тарболыот https://registry.npmjs.org?