[英]How should a Node.js server be started in production?
在我的 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()
启动服务器时,我做错了吗?
1024 以下的端口需要额外的额外访问权限才能打开。 您的应用程序没有以 root 身份运行(这很好。)因此它无权监听 443。
根据您的 linux 分布,有多种方法可以允许特定用户访问特定端口。
我的建议? 不要使用它们中的任何一个。
应该如何在生产中启动...服务器?
在应用程序前面使用经过验证且值得信赖的反向代理/负载均衡器。 nginx、haproxy 和 apache 是负载平衡/反向代理软件的 3 个示例,它们可以使用您的适当 SSL 证书在 443 上侦听 443 并转发一些请求。
这样做的原因有很多:
如果您在云提供商上,他们可以提供负载均衡器。 每月 20 美元左右,对于超低预算、低容量的应用程序(无论如何更适合无服务器架构)来说,它们往往有点贵。 否则,在您的应用程序前面拥有一个一致、可靠、记录良好且完全托管的负载均衡器是非常值得的。 (有趣的是:至少在亚马逊上,并且可能在其他提供商上,您可以使用一个负载均衡器来托管多个不同的应用程序并根据主机名或请求的其他属性进行区分。您还可以将请求发送到 lambda 函数,它可以与运行专用操作系统相比,可显着节省金钱,更不用说您无需管理操作系统即可节省时间)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.