我们可以同时使用 NGINX 和 PM2 进行 node.js 生产部署吗?
Posted
技术标签:
【中文标题】我们可以同时使用 NGINX 和 PM2 进行 node.js 生产部署吗?【英文标题】:Can we use both NGINX and PM2 for node.js production deployment? 【发布时间】:2017-12-28 11:55:28 【问题描述】:我是 Node.js 的新手。我已经构建了我的第一个 Node.js 服务器。我正在做一些研究以提高节点 js 服务器在生产中的性能。于是我了解了 nginx 和 Process Manager(PM2)。
NGINX:
-
它可以对传入的请求进行负载平衡。
它可以作为我们应用程序的反向代理。
PM2:
-
尽管它内置了负载均衡器,但它可以将我们的应用程序划分为集群。
我们可以监控并在崩溃时重新启动应用程序。
我们可以将两者都用于生产吗?
虽然 PM2 中有负载均衡器,但我可以只使用 PM2 吗?
与 PM2 相比,使用 NGINX 有什么优势?
如果我使用使用 NGINX 的负载均衡器和使用 PM2 的集群,它会比只使用一个(NGINX 或 PM2)提供更好的性能吗?
【问题讨论】:
NGINX做反向代理毫无疑问,也许你只能用PM2做集群,让nginx发挥他的作用(两次负载均衡毫无意义) 或者,也可以在单台服务器上使用 pm2 中的负载均衡器,如果要均衡多台服务器,请使用 nginx 【参考方案1】:这是一个很大的话题,但让我帮助你并给你一些指导。
Nginx 不仅仅是一个反向代理。它可以为static content、can compress the response content 提供服务,可以在同一虚拟机的不同端口上运行多个应用程序等等。
PM2 通过在集群模式下运行并利用盒子的所有核心,从本质上帮助您扩展服务的吞吐量。阅读此 *** answer 以了解更多信息。
现在回答你的问题
我们可以将两者都用于生产吗?
是的,你应该这样做。 Nginx 可以在 80 端口上运行。PM2 可以在 3000 端口(或任何端口)上运行,然后可以管理应用程序实例内的流量。
单独使用 gzip 将对应用最终用户的性能产生巨大影响。
这里是good article,以防您需要有关如何设置的代码帮助
【讨论】:
最后一个url指向pm2首页,没有文章,请更新 如果你在 pm2 上运行 sudo,你可以让它启动到端口 80。 PM2 使用节点集群作为代理,它比 Nginx 代理慢得多。所以你的建议实际上是一个糟糕的解决方案,而不是 Nginx 应该做代理,PM2 不应该做代理。以上是关于我们可以同时使用 NGINX 和 PM2 进行 node.js 生产部署吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Ubuntu 上使用 pm2 和 Nginx 部署 Node.js 应用
如何在 Ubuntu 上使用 pm2 和 Nginx 部署 Node.js 应用