在启动时启用 Node 内置代理支持
使用 Node 的环境代理开关,掌握 fetch 与 http/https 的版本门槛及其客户端范围。
只要在进程启动时启用内置支持,Node 就能自行读取代理环境变量。可用的客户端取决于运行时版本:
- 内置 fetch 从 Node 24.0.0 起支持 NODE_USE_ENV_PROXY,并已向后移植到 22.21.0。
- 内置 node:http 与 node:https 通过其默认全局代理提供的支持从 24.5.0 开始,同样向后移植到了 22.21.0。
- 命令行开关 --use-env-proxy 从 24.5.0 和 22.21.0 开始提供。
在兼容版本上,这个 POSIX shell 示例为两种目标协议设置同一个企业 HTTP 代理:
export HTTP_PROXY=http://proxy.example.net:8080
export HTTPS_PROXY=http://proxy.example.net:8080
export NO_PROXY=localhost,127.0.0.1,.internal.example
node --use-env-proxy app.js
HTTPS_PROXY 这个名称选择的是 HTTPS 目标的走法;URL 仍然可以指向一个 HTTP 代理。把 NO_PROXY 调整成应当绕过代理的目标。若要在没有代理账户的情况下独立测试公网 URL,可以使用HTTP 代理列表中的一条 HTTP 条目来同时提供两个代理值,同时保留必需的内部绕过项。
环境开关形式是另一种写法:
export NODE_USE_ENV_PROXY=1
node app.js
无论采用哪种形式,都要在启动 Node 之前设置好路由变量。启动之后再把 opt-in 标志赋给 process.env 并不会重新执行启动初始化。
确认实际使用的 HTTP 客户端
默认全局代理只对使用它们的 http 和 https 调用有效。自带自定义 agent 或 dispatcher 的库控制自己的传输;原始 TCP socket 不在这项 HTTP 路由功能之内。对于兼容的 Undici 客户端,显式的 ProxyAgent dispatcher 是另一个客户端本地接口。
如果应用替换了全局代理,先检查这个替换是否保留了启动代理行为。同样,npm 的注册表配置是一项独立的工具设置,并不能证明 app.js 如何路由请求。
企业有 TLS 信任要求时,请为运行时配置合适的受信任 CA。启用代理路由并不需要关闭证书校验。