gpt4 book ai didi

node.js - 让 Node.js 使用 http_proxy、https_proxy 和 no_proxy 环境变量

转载 作者:可可西里 更新时间:2023-11-01 16:36:46 55 4
gpt4 key购买 nike

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

设置 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 似乎不会影响 Node 服务器的行为,但我需要一种无需手动编辑库即可执行此操作的方法。我有大约 10 个库可以访问需要尊重此代理行为的外部服务。

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

最佳答案

不幸的是,Node.js 运行时不支持使用开箱即用的环境变量配置 HTTP 代理(参见 nodejs/node#8381nodejs/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它可以用作预加载模块来代理所有请求(由 GLOBAL_AGENT_HTTP_PROXY 环境变量配置):

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

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

关于node.js - 让 Node.js 使用 http_proxy、https_proxy 和 no_proxy 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688508/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com