我们可以同时使用 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 生产部署吗?的主要内容,如果未能解决你的问题,请参考以下文章

node多项目同时运行,nginx端口监听转发

如何在 Ubuntu 上使用 pm2 和 Nginx 部署 Node.js 应用

如何在 Ubuntu 上使用 pm2 和 Nginx 部署 Node.js 应用

Nodejs、PM2 和 nginx 部署安全性?

如何在 Ubuntu 上使用 pm2 和 Nginx 部署 Node.js 应用

Next.js项目部署,使用Nginx和pm2