乐闻世界logo
搜索文章和话题

如何从 npm 代理中排除某些域名

6 个月前提问
5 个月前修改
浏览次数30

1个答案

1

在使用npm时,我们可能会遇到需要通过代理服务器访问npm仓库,但又希望某些特定的域名可以直接访问而不经过代理的情况。这种需求在企业内部使用私有npm仓库的时候尤为常见。以下是如何从npm的代理设置中排除特定的域名:

  1. 设置npm代理
    首先,你需要设置npm的代理。这可以通过npm config命令来完成。例如,假设你的代理服务器地址是http://proxy.example.com:8080,你可以这样设置http和https代理:

    bash
    npm config set proxy http://proxy.example.com:8080 npm config set https-proxy http://proxy.example.com:8080
  2. 使用no_proxy设置排除特定域名
    如果你想要某些域名不走代理,可以使用no_proxy环境变量来设置。这个变量支持你列出所有不希望通过代理的域名。比如,如果你不希望example.orgmyprivate.repo通过代理,你可以设置:

    bash
    npm config set no-proxy example.org,myprivate.repo

    或者你也可以在你的环境变量中直接设置这一项:

    bash
    export NO_PROXY=example.org,myprivate.repo

    在Windows系统中,可以在环境变量设置中添加NO_PROXY变量。

  3. 验证配置
    配置完成后,可以通过查看npm配置来确认设置是否正确:

    bash
    npm config list

    这将会列出所有的npm配置信息,包括你刚才设置的代理和排除的域名。

  4. 示例场景
    假设在一个企业环境中,内部有一个私有的npm仓库,位于myprivate.repo,同时需要访问公共的npm仓库。企业的网络策略要求所有外部访问都必须通过代理。在这种情况下,你可以设置npm的代理,同时将myprivate.repo添加到no_proxy中,这样访问此私有仓库时就不会通过外部代理,保证了访问速度和安全性。

通过这样的设置,你可以在确保能通过代理访问外部资源的同时,对特定的内部或者敏感的域名直接访问,既满足了安全策略,也保证了网络访问的效率。

2024年6月29日 12:07 回复

你的答案