Кеш репозитория Nexus не загружается с модулями npm - PullRequest
0 голосов
/ 05 июля 2019

Моя организация не разрешает серверам с прямым доступом в интернет.На автономном компьютере установлен Nexus 3 OSS с прокси-доступом к https://registry.npmjs.org.Я проверил поток от нашей машины Nexus до https://registry.npmjs.org, и он отлично работает.Далее мы настроили репозиторий npm-proxy как здесь

Чтобы получить доступ к серверу Nexus, нам нужно пройти через обратный прокси-сервер - сервер Apache (версия 2.4) с виртуальным хостом, перенаправленным намашина нексус.Мы зарегистрировали псевдоним DNS для обратного прокси-сервера и перенаправили на установленный сервисный порт Nexus.Мы ссылались this

Теперь с моего машинного терминала, установленного на Nexus, я установил очень простой package.json, а также обновил регистр npm, чтобы он указывал на наш nexus.Затем я проверяю установку с помощью npm install.Работает нормально.Я получаю node_modules.Однако ничего не обновляется, когда я просматриваю хранилище в Nexus.

Любые подсказки о том, что может отсутствовать или как устранить неполадки, очень помогут.

То, что я пытался:

Когда я установил реестр npm вhttps://registry.npmjs.org с прокси-сервером, установленным в файле .npmrc, я получаю созданные node_modules.

Когда я изменяю реестр, чтобы указать на нексус моей компании с прокси-сервером, все еще активным, я получаю ошибку: npmERR!код E502 нпм ERR!502 Bad Gateway - GET https://repos-dev.company.hub/repository/npm-proxy/@angular%2fcdk.

Когда я удаляю прокси (который должен бытьслучай, когда я могу связаться с моей компанией Nexus без прокси) я получаю сообщение об ошибке: npm ERR!запрос к https://repos-dev.company.hub/repository/npm-proxy/@angular%2fcdk не выполнен, причина: запись EPROTO 140244137531200: ошибка: 1425F102: процедуры SSL: ssl_choose_client_version: неподдерживаемый протокол: ../deps/openssl/openssl/ssl/statem/statem_lib.c:1922:

Я не уверен, где я иду не так.

Еще несколько входов, которые могут помочь понять мои настройки:

Немного о настройке Nexus компании: Nexus установлен на автономном сервере.На этом сервере я пробую все вышеперечисленное.С этого сервера у нас есть прокси-доступ к https://registry.npmjs.org.Мы протестировали установку npm, напрямую используя этот реестр с данными прокси-сервера, и он работает нормально.

Доступ к серверу nexus можно получить из пользовательской сети (браузера) с помощью обратного прокси-сервера apache.Сервер Apache (версия 2.4) установлен на другом автономном сервере Windows (не включен доступ к Интернету, однако включен прокси-доступ к https://registry.npmjs.org).С этого сервера мы используем перенаправление виртуального хоста на сервер Nexus.

Ниже приведено правило: имя_сервера repos-dev.company.hub ProxyPreserveHost На SSLEngine на

SSLProxyEngine on

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

    ProxyRequests Off
    ProxyPreserveHost On
    RewriteEngine On
    RequestHeader set X-Forwarded-Proto "https"
    AllowEncodedSlashes NoDecode

SSLCertificateFile "D:\certs\repos-dev_company_hub.pem"
SSLCertificateKeyFile "D:\certs\repos-dev.company.hub.key" 
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1
SSLHonorCipherOrder On
LogLevel debug
ProxyPass / http://<nexus server ip:port>/ nocanon
ProxyPassReverse / <nexus server ip:port>/


ErrorLog "logs/repos-error.log"
CustomLog "logs/repos-access.log" common

AllowEncodedSlashes NoDecode

Я проверил доступ к https://registry.npmjs.orgс моего сервера Apache (Windows Server) из браузера (необходимо включить прокси), и он доступен.

В конфигурациях Nexus я настроил свой npm-proxy для использования https://registry.npmjs.org в качестве реестра.Я также включил прокси-сервер HTTP на приборной панели Nexus.

Ниже приведены подробные журналы

65 verbose stack FetchError: request to https://repos-dev.company.hub/repository/npm-proxy/@angular%2fcompiler failed, reason: write EPROTO 140311458678592:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:../deps/openssl/openssl/ssl/statem/statem_lib.c:1922:
65 verbose stack
65 verbose stack     at ClientRequest.<anonymous> (/opt/node/lib/node_modules/npm/node_modules/node-fetch-npm/src/index.js:68:14)
65 verbose stack     at ClientRequest.emit (events.js:200:13)
65 verbose stack     at TLSSocket.socketErrorListener (_http_client.js:402:9)
65 verbose stack     at TLSSocket.emit (events.js:200:13)
65 verbose stack     at errorOrDestroy (internal/streams/destroy.js:107:12)
65 verbose stack     at onwriteError (_stream_writable.js:438:5)
65 verbose stack     at onwrite (_stream_writable.js:459:5)
65 verbose stack     at internal/streams/destroy.js:49:7
65 verbose stack     at TLSSocket.Socket._destroy (net.js:593:3)
65 verbose stack     at TLSSocket.destroy (internal/streams/destroy.js:37:8)
65 verbose stack     at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:84:12)
66 verbose cwd /data/npmTest
67 verbose Linux 3.10.0-693.21.1.el7.x86_64
68 verbose argv "/opt/node/bin/node" "/opt/node/bin/npm" "install"
69 verbose node v12.4.0
70 verbose npm  v6.9.0
71 error code EPROTO
72 error errno EPROTO
73 error request to https://repos-dev.company.hub/repository/npm-proxy/@angular%2fcompiler failed, reason: write EPROTO 140311458678592:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:../deps/openssl/openssl/ssl/statem/statem_lib.c:1922:
74 verbose exit [ 1, true ]

Любая помощь высоко ценится.

...