Node.js全局代理设置

kevin.Zhu 发布于:2017-8-28 11:18 分类:Nodejs  有 18 人浏览,获得评论 0 条  

https://gxnotes.com/article/178644.html



问题描述

我在代理服务器后面的裁剪网络中工作。在我的代码中,我可以使用此线程中提到的方法(How can I use an http proxy with node.js http.Client?)设置代理。

但是问题是,大多数第三方模块没有代理设置,我无法修改代码来添加代理。此外,我的代码可能在直接连接环境中使用,这意味着我无法在代码中代理设置hard-code。

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

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

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

Node.js支持全局代理设置,以便我不需要更改所有代码并轻松地打开和关闭。

最佳解决办法

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

然而,NPM上的global-tunnel模块似乎处理了这一点:

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

globalTunnel.initialize({ host: 'proxy.example.com', port: 8080 }); 

在通过initialize的呼叫建立全局设置后,http.requestrequests库将使用代理信息。

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

process.env.http_proxy = 'http://proxy.example.com:3129';
globalTunnel.initialize(); 

次佳解决办法

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

参考文献

注:本文内容整合自google/baidu/bing辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:gxnotes#qq.com(#替换为@)。

本文由《共享笔记》整理, 博文地址: https://gxnotes.com/article/178644.html,未经允许,请勿转载。