我在Node JS应用程序中有很多路由,我试图扩展到多个CPU核心(通过NodeJS集群)。
我想到的计划是让不同的工人处理一组不同的express.js路线。例如:
/api/ requests handled by WorkerA
/admin/ handled by WorkerB
/blog/ handled by WorkerC
etc
仅使用带有工作者ID的条件是不够的,因为请求仍然可以落在错误的工作者身上。此外,这些进程都在同一个端口上运行,因此我无法匹配&来自nginx内部的URL的proxy_pass。
此时,我正在考虑更换群集路由(从主服务器到工作服务器)以匹配URL并路由到正确的工作人员而不是仅使用内置的循环方法。但这看起来有点笨拙,我想知道是否其他人已经解决了这个问题,或者可能有其他任何想法。
答案 0 :(得分:1)
我的解决方案是在不同的端口上运行多个快速应用程序,并在前面设置Nginx服务器以代理请求
假设您有三个快速应用程序,每个应用程序将处理特定类型的路由器,并在单独的端口(8082
,8083
,//API app used to handle /api routing
apiApp.listen(8081);
//Admin app used to handle /admin routing
adminApp.listen(8082);
//Blog app used to handle /blog routing
blogApp.listen(8083);
)上进行监听,当然,它们也是应该在集群模式下运行:
server {
# let nginx server running on a public port
listen 80;
location /api {
proxy_pass http://127.0.0.1:8081
}
location /admin {
proxy_pass http://127.0.0.1:8082
}
location /blog {
proxy_pass http://127.0.0.1:8083
}
}
并配置Nginx服务器以代理请求:
proxy_pass
8081
只是告诉nginx将请求转发给/ api到监听<xsl:value-of select="substring-before(., '#')"/>
的服务器。您可以查看完整的文档here