这两天须要安装一个Linux虚拟机,接下来要经过 yum 来安装须要的软件。node
因单位的网络须要经过代理才能访问外网,公司代理服务器:proxy.xxxx.com,给yum增长了proxy设置:linux
# 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
# 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.ui