You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中Node.js应用HTTP_PROXY环境变量不生效问题

解决Docker容器中Node.js fetch API不读取HTTP_PROXY环境变量的问题

Node.js内置的fetch API(v18+)默认不会自动读取容器环境变量中的代理配置,这是因为它基于undici实现,而undici没有内置从环境变量自动加载代理的逻辑。以下是几种可行的解决方案:

方案1:手动使用undici的ProxyAgent配置代理

直接读取环境变量中的代理地址,创建代理Agent并传给fetch:

// index.mjs
import { ProxyAgent } from 'undici';

async function main() {
  // 优先读取HTTPS_PROXY,其次HTTP_PROXY
  const proxyUrl = process.env.HTTPS_PROXY || process.env.HTTP_PROXY;
  const fetchOptions = {};

  if (proxyUrl) {
    fetchOptions.agent = new ProxyAgent(proxyUrl);
  }

  // 注意:fetch需要完整的URL(带http/https)
  const response = await fetch('https://test.com', fetchOptions);
  return response.text();
}

main().then(console.log).catch(console.error);

需要先在项目中安装undici(Node.js v20.3.1可能已内置,但显式安装更稳妥):

npm install undici

方案2:使用global-agent实现全局自动代理

global-agent包可以让Node.js的所有HTTP/HTTPS请求(包括fetch)自动读取环境变量中的代理配置,无需修改每个fetch调用:

  1. 安装依赖:
npm install global-agent
  1. 修改代码,在开头引入并初始化:
// index.mjs
import 'global-agent/bootstrap';

async function main() {
  const response = await fetch('https://test.com');
  return response.text();
}

main().then(console.log).catch(console.error);

该包会自动识别HTTP_PROXY、HTTPS_PROXY、NO_PROXY等环境变量,无需额外配置。

方案3:封装fetch函数自动处理代理

如果不想引入额外依赖,可以封装一个带代理逻辑的fetch函数:

// index.mjs
async function fetchWithProxy(url, options = {}) {
  const proxyUrl = process.env.HTTPS_PROXY || process.env.HTTP_PROXY;
  if (proxyUrl) {
    // 动态导入undici的ProxyAgent
    const { ProxyAgent } = await import('undici');
    options.agent = new ProxyAgent(proxyUrl);
  }
  return fetch(url, options);
}

async function main() {
  const response = await fetchWithProxy('https://test.com');
  return response.text();
}

main().then(console.log).catch(console.error);

关键说明

  • Docker设置的环境变量确实已传递到容器中,但Node.js的内置fetch不会默认使用这些变量,必须手动配置代理Agent。
  • 确保fetch请求使用完整的URL(包含http/https协议),否则可能导致代理逻辑失效。
  • 若需要处理NO_PROXY规则,global-agent会自动处理;使用undici时需自行判断目标地址是否在NO_PROXY列表中,再决定是否启用代理。

内容的提问来源于stack exchange,提问作者unclesmiley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:15:31