我在 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 并路由到正确的工作节点,而不是仅使用内置的循环方法。但这似乎有点老套,我想知道是否有其他人解决了这个问题,或者可能有任何其他想法。
我的解决方案是运行多个在不同端口上侦听的 Express 应用程序,并在前面设置一个 Nginx 服务器来代理请求
假设您有三个 Express 应用程序,每个应用程序都会处理特定类型的路由器,并侦听单独的端口(8081
, 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);
并配置 Nginx 服务器来代理请求:
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
}
}
proxy_pass
只是告诉 nginx 将请求转发到 /api 到正在侦听的服务器8081
。您可以查看完整文档here http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)