在生产中应该如何启动Node.js服务器?

qco9c6ql  于 2022-09-19  发布在  Node.js
关注(0)|答案(1)|浏览(186)

在我的Node.js服务器中,我使用app.listen(443);来尝试、侦听和使用HTTPS。当我尝试在我的Linux服务器上运行它时,出现以下错误:

Emitted 'error' event on Server instance at:
  at emitErrorNT (node:net:1459:8)
  at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'EACCES',
  errno: -13,
  syscall: 'listen',
  address: '0.0.0.0',
  port: 443
}

我不知道这是什么意思,但服务器似乎在使用端口443时出现了问题。当我用app.listen()启动服务器时,我做错了什么吗?

m1m5dgzv

m1m5dgzv1#

1024以下的端口需要额外的访问权限才能打开。您的应用程序没有以超级用户身份运行(这很好!)因此,它无法在443上收听。

根据您的Linux发行版,存在variety of ways to allow a particular user access to a particuar port

我的建议是什么?不要使用任何一种。
一个人应该怎么.服务器正在生产中启动?

在应用程序前面有一个可靠且可靠的反向代理/负载均衡器。Nginx、haproxy和apache是负载平衡/反向代理软件的3个示例,它们可以使用适当的SSL证书监听443,并将请求转发到443以上的某个端口上的应用程序。

这么做的原因有很多:

  • 硬化。这些应用程序专门为处理大容量、不良行为者和网络问题而构建。它们能够用相对较少的资源处理大量流量。
  • 灵活性和可用性。如果你的应用程序运行在443上,升级应用程序的唯一方法就是先“停止”旧版本。然后,您可以在同一端口上启动新版本。同时,在新版本准备好处理请求之前,您的应用程序处于脱机状态。如果应用程序端口不相关,在负载均衡器之后,您可以在旧版本的同时调出新版本。你甚至可以按百分比缓慢削减流量,如果你不喜欢你的SLI(服务级别指示器--即告诉你应用程序是否正常运行以及用户是否成功使用的指标)的外观,你就有机会“切换回来”
  • 可扩展性。因此,当您需要添加另一台服务器时,根本没什么大不了的。或者,这应该归入“可用性”一栏,因为能够更换服务器比升级和维护服务器要容易得多。

如果你使用云服务提供商,他们可以提供负载均衡器。每月20美元左右的价格对于超低预算、小容量的应用程序(无论如何更适合无服务器架构)来说往往有点贵。否则,在您的应用程序面前拥有一个一致、可靠、日志记录良好且完全受管理的负载均衡器是非常值得的。(有趣的是:至少在Amazon上,可能在其他提供商上,您可以使用一个负载均衡器来托管多个不同的应用程序,并根据主机名或请求的其他属性进行区分。您还可以向lambda函数发送请求,与运行专用操作系统相比,这可以提供显著的金钱节约,更不用说您不必管理操作系统所节省的时间了)。

相关问题