【问题标题】:Make Node.js use http_proxy, https_proxy and no_proxy environment variables让 Node.js 使用 http_proxy、https_proxy 和 no_proxy 环境变量
【发布时间】:2016-06-07 20:15:57
【问题描述】:

我有一个节点服务器,并且根据最近的一些基础架构更改,我需要确保所有出站请求都通过 Squid 代理,除了 NO_PROXY 环境变量中列出的主机的流量。

设置 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 似乎不会影响节点服务器的行为,但我需要一种方法来做到这一点,而无需手动编辑库。我有大约 10 个库可以访问需要尊重这种代理行为的外部服务。

是否有其他方法可以全局设置代理行为,包括尊重 NO_PROXY?

【问题讨论】:

标签: node.js http proxy


【解决方案1】:

不幸的是,Node.js 运行时不支持使用开箱即用的环境变量配置 HTTP 代理(请参阅 nodejs/node#8381 和 nodejs/node#15620)。请求库支持参差不齐:

任何提供传递http.Agent 的方法的库,可以支持环境配置的代理,例如:

例如:

import fetch from 'node-fetch';
import ProxyAgent from 'proxy-agent';

const response = await fetch('https://example.com', { agent: new ProxyAgent() });
const body = await response.text();

如果你不能传递Agent,或者根本不能修改代码,你可以考虑global-agent,它可以作为一个预加载模块来代理所有请求(由@配置987654343@环境变量):

export GLOBAL_AGENT_HTTP_PROXY=http://proxy.example.com
node --require global-agent/bootstrap mycode.js

或者,如果您的系统支持LD_PRELOAD 或DYLD_INSERT_LIBRARIES,您可以使用通用代理,例如ProxyChains-NG(或原来的ProxyChains)。

【讨论】:

    【解决方案2】:

    万一有人来了,好像已经在https://github.com/request/request/pull/1096request.js中添加了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-07
      • 2018-07-06
      • 1970-01-01
      • 2017-07-08
      • 2020-05-31
      • 2021-11-25
      • 1970-01-01
      • 2020-12-22
      相关资源
      最近更新 更多