nodejs 實現 http proxy 透明轉發


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM