這兩天需要安裝一個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.
