我正在尝试为npm(nodejs)设置一个私有注册表,但我不想复制整个公共数据库.我看过关于如何做到这一点的帖子,但是,即使我遵循这种方法,我还有另一个问题.我的工作站位于VPN后面,所以我需要在NPM中设置代理才能从公共注册表中获取模块.如果我创建我的私人注册表,它将位于公司VPN内(使其无法公开访问).这意味着我不需要代理来访问我的私人注册表,但就像我之前说的那样,我确实需要它用于公共注册表.
我从git获得了NPM的代码,但在修改它之前,我想我会问,有没有人知道如何解决这个问题?我知道你可以在运行npm install时指定注册表和代理,但我希望能够运行npm install.
无论如何将pac文件应用于npm?除了修改源代码之外,我还能做些什么吗?
我从git获得了NPM的代码,但在修改它之前,我想我会问,有没有人知道如何解决这个问题?我知道你可以在运行npm install时指定注册表和代理,但我希望能够运行npm install.
无论如何将pac文件应用于npm?除了修改源代码之外,我还能做些什么吗?
解决方法
我遇到了这个问题.
我们在私有npm注册表前面设置了一个Nginx代理.我们在404上创建了对全局npm注册表的回退.
我们在私有npm注册表前面设置了一个Nginx代理.我们在404上创建了对全局npm注册表的回退.
因此,在进行npm安装时,我们只需要指定Nginx代理,如果找到,则负责从私有注册表提供包,如果没有,则由全局注册表提供.
这是您可以使用的Nginx配置:
server { listen 80 default_server; location ~ ^/registry/*/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass http://private_npm_upstream; proxy_intercept_errors on; error_page 404 = @fallback-2; proxy_redirect off; } location @fallback-2 { access_log /var/log/Nginx/global_npm.access.log; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host registry.npmjs.org; proxy_set_header X-Nginx-Proxy true; proxy_pass http://registry.npmjs.org; proxy_redirect off; proxy_intercept_errors on; } } upstream global_npm_upstream { server registry.npmjs.org; } upstream private_npm_upstream { server 127.0.0.1:5984; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。