Перехватывать исходящие HTTP-запросы к npmjs.org и т. Д. - PullRequest
0 голосов
/ 14 мая 2018

Я хочу создать локально работающий сервер Node.js, который может перехватывать исходящие запросы в реестр NPM (npmjs.org или любой другой).

Это что такое обратный прокси?

По сути, я хотел бы создать локально работающий реестр NPM - это для использования с локально работающими контейнерами Docker. Обычно я бы просто использовал npm link для локального развития. Но при локальном тестировании библиотек с помощью Docker использование npm link для этого становится трудным или невозможным

Я знаю, что есть некоторые библиотеки, которые настраивают локальный реестр NPM, но я пытаюсь сделать это с нуля, чтобы я мог настроить его для своего варианта использования. По сути, я хочу архивировать пакеты, которые существуют в моей файловой системе каждый раз, когда приходит запрос npm install.

Я начал экспериментировать с:

npm config set registry http://localhost:3440

но когда я впоследствии сделал npm install, он, похоже, не попал на мой локально работающий сервер, просто пошел на registry.npmjs.org как обычно.

Я также пытался изменить / etc / hosts

перед:

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost

после

127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost
registry.npmjs.org localhost:3440

но мой локальный сервер, прослушивающий порт 3440, похоже, не перехватывал трафик.

1 Ответ

0 голосов
/ 14 мая 2018

Это не обратный прокси, но это прямой прокси . И вам фактически придется использовать npm config set proxy, чтобы использовать его из вызова npm.

Основным инструментом, используемым для такого прокси-сервера, обычно является прокси-сервер squid. И я уверен, что вы можете создать более надежный и полнофункциональный сервис, используя некоторые хорошо известные инструменты прямого прокси, вместо пользовательского инструмента nodejs.

Тогда вам нужно будет проверить, где работает эта служба (на том же докере, на другом докере на вашем хосте). Адрес, который вы указали для npm в npm config set proxy, должен быть разрешен изнутри контейнера, выполняющего npm (но он может отличаться между командами, выполняющимися на шаге Dockerfile, и командами, запущенными в сеансе bash после этой сборки).

...