node.js基于url的http-proxy代理

时间:2014-02-19 19:16:00

标签: node.js proxy http-proxy

我想基于URL创建代理,这样您就可以访问:blah.com:8000/tolley-ltm并将代理请求发送到我的本地工作站,例如tolley.internal.blah.com URL。所以我也可以做blah.com:8000/someguy-ltm,它会发送到someguy-ltm.internal.blah.com上某个人的工作站。最终用户只能看到blah.com:8000/tolley-ltm

我有这种工作,但不是100%,我希望你的帮助!这是当前的代码:

var fulltld ="internal.blah.com";
var proxyServer = httpProxy.createProxy();

var options = {
  '/tolley-ltm': 'tolley-ltm',
  '/someguy-ltm': 'someguy-ltm'
}

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

  var dest = req.url;
  req.url = '/';

  fail = function(err){  
    console.log("Something bad happened: " + err);
  }

  proxyServer.web(req, res, {
    target: {
        host: options[dest] + '.' + fulltld,
        port: 6109
    }
  },fail);
}).listen(8000);

所以当前发生的事情是我在我的浏览器中访问blah.com:8000/tolley-ltm并成功转到tolley.internal.blah.com:6109,但是当我导航以来我将req.url更改为/而不是tolley-ltm然后每个后续行动然后转到blah.com:8000/而不是blah.com:8000/tolley-ltm这会导致代理停止工作。

旁注:如果我不将req.url更改为'/',它最终代理到tolley.internal.blah.com:6109/tolley-ltm而不仅仅是tolley.internal.blah.com:6109/

有没有办法让最终用户的网址看起来像blah.com/8000/tolley-ltm并且所有操作都回拨给blah.com/8000-ltm,例如我点击链接到转到/ products,它会把我带到blah.com/8000/tolley-ltm/products而不是blah.com/8000/products

0 个答案:

没有答案