9

我为 http-proxy 使用以下代码:

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);

我的问题是,我可以动态更新路由表吗?不关闭代理服务器?

谢谢解答

4

2 回答 2

15

对于每个面临这个问题的人,最后我得到了开箱即用的解决方案。如果你传递一个指向文件的字符串,而不是传递一个对象作为参数,这一切都是可能的。我举个例子,应该很清楚。

代理.js:

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

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

正如您在这里看到的,我将 table.json 作为路由器选项传递。因此,请查看该文件。

表.json:

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

这就是整个魔术。node-http-proxy 将监视该文件,如果您对其进行任何更改,它将自动更新其路由表。

问候

于 2012-04-27T06:40:05.747 回答
0

是的,但不使用 ProxyTable。我已经记录了 http-proxy 的 ProxyTable 的替代方案,称为“Switchboard”,它可以执行您希望它执行的操作。您必须重新安排一些功能以正确初始化路径和后端目标,但这应该是一个简单的操作,并且backendTable对象在运行时是动态可用的。

于 2012-01-05T19:05:39.983 回答