用NodeJS 做反向代理服務器

用NodeJS 做反向代理服務器

場景:

     一臺機器,一個80端口,多個web應用,怎樣複用80端口呢?

反向代理:

     NodeJS做反向代理80端口,根據 HTTP head 判斷不同的服務類型,進行轉發。

     例如:baidu.com 域名請求在端口82,yahoo.com 域名請求在端口83, tianya.com 域名在端口84

軟件包:

     npm  install  http-proxy

代碼部分:

    新建proxy.js 文件:

    var http = require('http'),  httpProxy=require('http-proxy');

    var proxy = httpProxy.createProxyServer( { } );

    proxy.on('error',  function(err, req,  res) {

        res.writeHead(500, {

         'Content-Type':'text/plain'

    } );

    res.end('server error ');

   } );


   var server = require('http').createServer(function(req, res){

     var host = req.headers.host;

     var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;

     switch(host){

        case 'baidu.com':

            proxy.web(req, res, {target: 'http://localhost:82'});

            break;

        case 'yahoo.com':

            proxy.web(req, res, { target: 'http://localhost:83'} );

            break;

         case 'tianya.com':

            proxy.web(req, res, { target: 'http://localhost:84'});

            break;

         default:

            res.writeHead(302, {'Content-Type':'text/plain' });

            res.end("重定向錯誤!");

      }

   }); 

    console.log("listening on port 80!");

    server.listen(80);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章