XGHeaven
V2EX  ›  问与答

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

  •  
  •   XGHeaven · May 8, 2020 via Android · 1519 views
    This topic created in 2234 days ago, the information mentioned may be changed or developed.

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

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

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

    大家有啥更好的方法么?

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

    而且上面也说了,你不改 url 证书这块很麻烦,不好处理
    shansing
        3
    shansing  
       May 8, 2020
    @tt0411
    @rockyou12
    sniproxy 了解一下,不需要部署私钥 /改变证书。
    shansing
        4
    shansing  
       May 8, 2020
    @shansing 呃,但是只能代理不能缓存,不符合题主要求。
    otakustay
        5
    otakustay  
       May 8, 2020
    缓存服务器单独给它个 DNS 配置就好了呗,114 都行
    azh7138m
        6
    azh7138m  
       May 8, 2020 via Android
    http 下可以自己劫持自己
    https 下可以自己中间人自己
    (我要告诉你老板,你又在划水了
    unhappy224
        7
    unhappy224  
       May 8, 2020
    没必要吧,不想全局配置 url 的话可以在项目里面加一个.npmrc
    XGHeaven
        8
    XGHeaven  
    OP
       May 8, 2020 via Android
    @unhappy224 主要有些个人的项目不止在内网(家里)开发,有时在公司抽空也会写两下。所以不想改地址。
    mgrddsj
        9
    mgrddsj  
       May 8, 2020 via Android
    参考 steamcache, lancache, qcacher.
    XGHeaven
        10
    XGHeaven  
    OP
       May 8, 2020 via Android
    @mgrddsj 好的我研究下
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2410 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 10:13 · PVG 18:13 · LAX 03:13 · JFK 06:13
    ♥ Do have faith in what you're doing.