Реализация обратного прокси в Nodejs - PullRequest
2 голосов
/ 09 марта 2012

Я пытаюсь создать обратный прокси-сервер, используя nodejs, где я мог бы сопоставить различные комбинации для указания на разные веб-сайты.

Следующий код - моя первая попытка:

var http = require('http'),
httpProxy = require('http-proxy');
httpProxy.createServer(function (req, res, proxy) {
  proxy.proxyRequest(req, res, {
  host: 'www.yahoo.com',
  port: 80
 });
}).listen(8000);

хорошоотлично работает, но если у меня есть целый набор комбинаций.я не знаю, как это сделать.

Моя вторая попытка

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

var mapping = {
hostnameOnly: true ,
router : {
 '127.0.0.1:8000' : 'www.google.com' ,
 '127.0.0.1:8001' : 'www.yahoo.com'
   }
}

var proxyserver = httpProxy.createServer(mapping).listen (80) ;

Это даже работает, я не знаю почему.

Ну, все, что я пытаюсь создать, - это простое приложение, в котором я сопоставляю домены и извлекаю эти страницы.Я все еще изучаю nodejs, поэтому я прошу прощения, если вопрос звучит смешно.

1 Ответ

0 голосов
/ 27 декабря 2013

Вторая попытка не удалась, поскольку спецификация hostnameOnly не принимает порты в путях маршрутизации.Из документов node-http-proxy :

var options = {
  hostnameOnly: true,
  router: {
    'foo.com': '127.0.0.1:8001',
    'bar.com': '127.0.0.1:8002'
  }
}

Вы на правильном пути.Смотрите здесь .Это должно работать нормально, если вы пропустите аргумент hostnameOnly.

...