Настройте локальный прокси-сервер для аудита npm с помощью Apache

#apache #reverse-proxy #nexus3 #npm-audit

Вопрос:

Основываясь на этом https://github.com/chovyy/npm-audit-proxy

В этом случае менеджер Nexus OSS v3 работает за обратным прокси-сервером Apache. Существует необходимость в прокси-аудите npm, а также в https://registry.npmjs.org/-/npm/v1/security/audits/.

Итак, как правильно настроить Apache для передачи вызова npm adit в https://registry.npmjs.org/-/npm/v1/security/audits/

Ответ №1:

Эта конфигурация Apache работала в моем случае.

 <VirtualHost 0.0.0.0:443>
  ServerName nexus.corporate.domain

  SSLEngine on
  SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
  SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
  SSLHonorCipherOrder On
  SSLCompression off
  SSLCertificateFile /etc/ssl/localcerts/nexus/nexus.pem
  SSLCertificateKeyFile /etc/ssl/localcerts/nexus/nexus.key
  SSLCertificateChainFile /etc/ssl/localcerts/nexus/Local_Corporate_CA_chain.crt

  SSLSessionTickets   off
  SSLProxyEngine On

  ProxyPass /repository/npm-public/-/npm/v1/security/audits https://registry.npmjs.org/-/npm/v1/security/audits
  ProxyPassReverse /repository/npm-public/-/npm/v1/security/audits https://registry.npmjs.org/-/npm/v1/security/audits
  ProxyPass         /  http://127.0.0.1:8081/ nocanon
  ProxyPassReverse  /  http://127.0.0.1:8081/
  ProxyRequests     Off
  ProxyPreserveHost Off
  AllowEncodedSlashes on

  RequestHeader set X-Forwarded-Proto "https"
  RequestHeader set X-Forwarded-Port "443"

  <Proxy http://127.0.0.1:8081/*>
    Order allow,deny
    Allow from all
  </Proxy>

  ErrorLog /var/log/apache2/nexus_apache_error.log
  CustomLog /var/log/apache2/nexus_apache_access.log common

</VirtualHost>
 

У меня была ошибка Запрещения 403, но она была вызвана включением прокси-сервера.
Изменил его на ProxyPreserveHost выключен

/репозиторий/npm-общедоступный/ является репозиторием типа группы npm, созданным в nexus. https://nexus.corporate.domain/repository/npm-public/