3

我尝试扩展我的 socket.io 应用程序并尝试在我的服务器上运行多个进程。

我使用 redis 存储而不是内存存储,如下所述:https ://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

我的服务器监听 8090 端口: var io = require('/usr/local/lib/node_modules/socket.io').listen(8090);

当我开始第二个进程时,我得到一个正在使用的地址错误:警告 - 引发错误:错误:监听 EADDRINUSE

处理这个问题的最佳方法是什么?每个进程一个端口和一个负载均衡器来区分它们?

还是有更好的解决方案?

4

1 回答 1

6

为此,我使用node-http-proxy,并根据请求的 URL 将流量路由到内部端口。下面是我用来路由请求的一个非常精简的示例。

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

var httpOptions = {
    router: {
        'domain1.com/foo': 'localhost:3001',
        'domain1.com/bar': 'localhost:3002',
        'domain2.com/baz': 'localhost:3003',
    } 
};

var httpServer = httpProxy.createServer(httpOptions);
httpServer.listen(80);

关于我的特定设置的更多详细信息可以在这个问题上找到:如何在 node-http-proxy 旁边使用 vhosts?

于 2012-07-22T22:00:51.783 回答