Node.js全局代理设置

Sha*_* Xu 33 proxy node.js

我在代理服务器后面的作物网络中工作.在我的代码中,我可以使用此线程中提到的方法设置代理(如何使用带有node.js http.Client的http代理?).

但问题是,大多数第三方模块没有代理设置,我无法修改其代码来添加代理.此外,我的代码可能会在直接连接环境中使用,这意味着我无法在代码中对代理设置进行硬编码.

我知道NPM有一个代理的全局设置

npm config set proxy http://proxy.company.com:8080
npm config set https-proxy http://proxy.company.com:8080

但我没有在Node.js中找到任何类似的配置.

Node.js是否支持全局代理设置,因此我无需更改所有代码并轻松打开和关闭.

aps*_*ers 23

不幸的是,似乎必须在每次调用时设置代理信息http.request.节点不包括全局代理设置的机制.

NPM上的global-tunnel-ng模块似乎可以解决这个问题:

var globalTunnel = require('global-tunnel-ng');

globalTunnel.initialize({
  host: '10.0.0.10',
  port: 8080,
  proxyAuth: 'userId:password', // optional authentication
  sockets: 50 // optional pool size for each http and https
});
Run Code Online (Sandbox Code Playgroud)

之后,全局设置与呼叫建立initialize,都http.requestrequest库将使用的代理信息.

该模块还可以使用http_proxy环境变量:

process.env.http_proxy = 'http://proxy.example.com:3129';
globalTunnel.initialize();
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以尝试我的包node-global-proxy,它适用于所有节点版本和大多数 http 客户端(axios、got、superagent、request 等)

安装后通过

npm install node-global-proxy --save

全局代理可以通过以下方式启动

const proxy = require("node-global-proxy").default;

proxy.setConfig({
  http: "http://localhost:1080",
  https: "https://localhost:1080",
});
proxy.start();

/** Proxy working now! */

Run Code Online (Sandbox Code Playgroud)

更多信息请访问: https: //github.com/wwwzbwcom/node-global-proxy


Sha*_* Xu 4

我终于创建了一个模块来(部分)解决这个问题。基本上这个模块重写了http.request功能,添加了代理设置然后触发。查看我的博客文章:https://web.archive.org/web/20160110023732/http ://blog.shaunxu.me:80/archive/2013/09/05/semi-global-proxy-setting-for-node .js.aspx