如何在局域网架设 npm 等包管理仓库的透明缓存?

2020-05-08 09:48:01 +08:00
 XGHeaven

简单来讲就是希望 url 不变,但是在内网请求的时候自动转发到内网的缓存服务器上。关键是透明代理缓存,也就是不改变 npm 仓库的地址。

想过方案,第一个就是 dns 直接解析到缓存服务器上,但缓存服务器就不能用域名代理访问 npm,只能自己解析之后再请求。而且 dns 解析不能解析到某个特定端口,折腾起来也很费劲。

第二个就是类似于科学上网的办法,但是更折腾,而且我的路由器似乎不支持开两个科学上网。

大家有啥更好的方法么?

540 次点击
所在节点    问与答
10 条回复
tt0411
2020-05-08 09:56:55 +08:00
不改变 url 很难, 因为现在的包管理仓库基本都是 https 了, 如果想通过缓存服务器直接返回内容, 就必须让客户端信任自定义 CA 证书, 这个成本通常比改变 url 要高很多 (安全风险也增加很多)
rockyou12
2020-05-08 10:04:12 +08:00
改 npm 地址比较好,因为像 nexus 这些仓库本来就带代理缓存功能,也可以通过 group 功能把公共仓库和私有库合并在一个虚拟的 group repo 下

而且上面也说了,你不改 url 证书这块很麻烦,不好处理
shansing
2020-05-08 10:37:36 +08:00
@tt0411
@rockyou12
sniproxy 了解一下,不需要部署私钥 /改变证书。
shansing
2020-05-08 11:02:17 +08:00
@shansing 呃,但是只能代理不能缓存,不符合题主要求。
otakustay
2020-05-08 11:31:22 +08:00
缓存服务器单独给它个 DNS 配置就好了呗,114 都行
azh7138m
2020-05-08 11:42:10 +08:00
http 下可以自己劫持自己
https 下可以自己中间人自己
(我要告诉你老板,你又在划水了
unhappy224
2020-05-08 14:25:19 +08:00
没必要吧,不想全局配置 url 的话可以在项目里面加一个.npmrc
XGHeaven
2020-05-08 14:29:08 +08:00
@unhappy224 主要有些个人的项目不止在内网(家里)开发,有时在公司抽空也会写两下。所以不想改地址。
mgrddsj
2020-05-08 14:57:28 +08:00
参考 steamcache, lancache, qcacher.
XGHeaven
2020-05-08 22:19:58 +08:00
@mgrddsj 好的我研究下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669532

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX