如何使用Apache为npm audit配置本地代理(适配Nexus OSS v3场景)
配置前置准备
- 确保Apache已启用
proxy、proxy_http、rewrite三个核心模块,启用命令参考:- Debian/Ubuntu 系:
a2enmod proxy proxy_http rewrite && systemctl restart apache2 - CentOS/RHEL 系:编辑
/etc/httpd/conf/httpd.conf,确保以下行未被注释,之后重启systemctl restart httpdLoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.so
- Debian/Ubuntu 系:
虚拟主机配置示例
请将以下规则添加到你部署Nexus OSS v3对应的Apache虚拟主机配置块中,注意特定路径代理规则要放在通用Nexus代理规则之前,否则会被通用规则覆盖不生效
<VirtualHost *:80> ServerName 你的Nexus私有仓库域名 # npm audit 请求专属转发规则 ProxyPassMatch "^/-/npm/v1/security/audits(/.*)?" "https://registry.npmjs.org/-/npm/v1/security/audits/$1" ProxyPassReverse "^/-/npm/v1/security/audits(/.*)?" "https://registry.npmjs.org/-/npm/v1/security/audits/$1" # 原有Nexus通用代理规则 ProxyPass / "http://你的Nexus内网地址:端口/" ProxyPassReverse / "http://你的Nexus内网地址:端口/" # 可选:推荐添加的请求头配置,方便后端日志溯源 ProxyPreserveHost On RequestHeader set X-Forwarded-Proto "http" RequestHeader set X-Forwarded-Port "80" RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s" </VirtualHost>
如果你用HTTPS部署Nexus,只需要将虚拟主机端口改为443,配置好SSL证书后,把
X-Forwarded-Proto改为https、X-Forwarded-Port改为443即可,转发规则无需调整。
效果验证
配置重载生效后,在本地将npm源切换为你的私有Nexus仓库地址,执行npm audit命令,无404报错、正常返回安全扫描结果即为配置成功。
内容的提问来源于stack exchange,提问作者vasja
相关产品推荐
相关产品推荐

