我们可以同时使用NGINX和PM2来进行Node.js生产部署吗?

15

我是Node.js的新手,已经构建了我的第一个Node.js服务器。我正在研究如何提高Node.js服务器在生产环境中的性能。因此,我学习了关于NGINX和进程管理器(PM2)的知识。

NGINX:

  1. 它可以负载均衡传入的请求。
  2. 它可以作为我们应用程序的反向代理。

PM2:

  1. 它可以将我们的应用程序分成群集,虽然它具有内置的负载均衡器。
  2. 当应用程序崩溃时,我们可以监视并重新启动应用程序。

我们可以在生产环境中同时使用它们吗?

尽管PM2中有负载均衡器,但我能够只使用PM2吗?

使用NGINX而不是PM2的优势是什么?

如果我同时使用NGINX进行负载均衡和使用PM2进行群集化,与仅使用其中一个(NGINX或PM2)相比,是否会获得更好的性能?


NGINX 作为反向代理无疑是一个不错的选择,也许你只需要使用 PM2 来创建集群,然后让 NGINX 发挥它的魔力(没有必要进行两次负载均衡)。 - Sebastián Espinosa
1
如果您想在单个服务器上使用负载均衡器,请在pm2中使用它,如果要平衡多个服务器,则可以使用nginx。 - Sebastián Espinosa
1个回答

30

这是一个庞大的主题,但让我来帮助你并给你一些指针。

Nginx不仅仅是一个反向代理,它可以提供静态内容压缩响应内容,可以在同一台虚拟机上的不同端口上运行多个应用程序等等。

PM2本质上通过以集群模式运行服务并利用盒子的所有内核来帮助您扩展吞吐量。阅读这个stackoverflow 答案 以了解更多信息。

现在回答你的问题

我们能在生产环境中同时使用它们吗?

是的,而且你应该这样做。Nginx可以在端口80上运行。PM2可以在端口3000(或其他端口)上运行,然后可以管理应用程序实例之间的流量。

仅gzip就会对应用程序最终用户性能产生巨大影响。

如果需要设置代码帮助,请参阅好文章


1
最后一个URL链接指向pm2主页,没有文章,请更新。 - Peter Moses
如果你在pm2上运行sudo,你可以让它启动到80端口。 - johndpope
PM2使用节点集群作为代理,这比Nginx代理慢得多。因此,你提出的建议实际上是一个不好的解决方案,相反,应该让Nginx来做代理,而PM2则不需要进行代理。 - Mick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接