分享一个入门的小实践:nodejs 做 http proxy 透明转发
发布于 1年前 作者 kylindai 1591 次浏览

这两天需要安装一个Linux虚拟机,接下来要通过 yum 来安装需要的软件。

因单位的网络需要通过代理才能访问外网,公司代理服务器:proxy.xxxx.com,给yum增加了proxy设置:

% vi /etc/yum.conf

添加下面的内容:

proxy=http://user:password@proxy.xxxx.com:8080 发现linux无法访问代理服务器,Linux虚拟机只能访问宿主host所在的网段,添加了路由,网关等都没效果(知道方法的请回复下)

索性自己搭一个proxy,来做透明转发,用nodejs来写吧,用stream.pipe()透传就OK,关键是传递给proxy服务器的认证信息如何传过去。

var http = require(‘http’);

var proxy = http.createServer(function(request, response) {

var options = {
    host: 'proxy.xxxx.com', // 这里是代理服务器       
    port: 8080, // 这里是代理服务器端口 
    path: request.url,       
    method: request.method,
    headers: {
      // 如果代理服务器需要认证
      'Proxy-Authentication': 'Base ' + new Buffer('user:password').toString('base64') // 替换为代理服务器用户名和密码
    }       
};

var req = http.request(options, function(req, res) {
    res.pipe(response); // 这个pipe很喜欢
    console.log(req.url);
}).end();

}).listen(8080);

这就写好了,启动 node proxy 后,用curl测试一下:

% curl -x localhost:8080 www.baidu.com 工作正常,虚拟机宿主:10.66.220.146,修改下 yum.conf

% vi yum.conf

proxy=http://10.66.220.146:8080/ 我可以在Linux里面 yum install了,That’s very good.

6 回复

你在哪个公司啊,和我的公司一样,上个网还要代理,还天天被人监视着,一举一动都被人看着,聊天记录都被记录下来供上司查看。

我们随便装软件也是不可以的,尽量找些能开心吧,要不真没有自由了,还互联网什么啊?

@kylindai是啊,都一样,我们每个人电脑上还要安装监控软件,什么都监控。

@xiuxu123 你的github.io上的about.html是自己做的吗,赞!

@kylindai 呵呵,不是我做的,抄的,然后修改了下!

我表示是来看一楼讨论的。。

回到顶部