Node-http-proxy динамически маршрутизируемый? - PullRequest
9 голосов
/ 07 октября 2011

я использую следующий код для http-прокси:

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

var options = {
    router: {
    'url1.com': '127.0.0.1:3000',
    'url2.com': '127.0.0.1:3001'
    }
};

httpProxy.createServer(options).listen(80);

У меня вопрос, могу ли я динамически обновлять маршрутную таблицу? Без выключения прокси-сервера?

Спасибо за ответы

Ответы [ 2 ]

15 голосов
/ 27 апреля 2012

Для всех, кто столкнулся с этой проблемой, наконец-то я получил решение из коробки. Все это возможно, если вы передаете строку, указывающую на файл, вместо передачи объекта в виде аргумента. Я приведу пример, и это должно быть ясно.

proxy.js:

var httpProxy = require('http-proxy');
var options   = { router: 'table.json' };

httpProxy.createServer(options).listen(80);

Как вы видите, я передаю table.json в качестве опции маршрутизатора. Так что загляните внутрь этого файла.

table.json:

{
   "router":
   {
      "domain1.com": "127.0.0.1:8080",
      "domain2.com": "127.0.0.1:8001"
   }
}

И в этом вся магия. node-http-proxy будет отслеживать этот файл, и если вы сделаете какие-либо изменения в нем, он автоматически обновит свой маршрутный маршрут.

Привет

0 голосов
/ 05 января 2012

Да, но не используется ProxyTable.Я задокументировал альтернативу ProxyTable http-proxy, называемую 'Switchboard' , которая делает то, что вы хотите.Вам нужно будет перестроить некоторые функции, чтобы правильно инициализировать пути и конечные цели, но это должна быть простая операция, а объект backendTable динамически доступен во время выполнения.

...