首页 > Web开发 > 详细

nodejs 实现 http proxy 透明转发

时间:2014-02-27 21:04:40      阅读:1100      评论:0      收藏:0      [点我收藏+]

这两天需要安装一个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服务器的认证信息如何传过去。

bubuko.com,布布扣
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);
bubuko.com,布布扣

这就写好了,启动 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.

nodejs 实现 http proxy 透明转发,布布扣,bubuko.com

nodejs 实现 http proxy 透明转发

原文:http://www.cnblogs.com/kylindai/p/3570385.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!