在我的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()
启动服务器时,我做错了什么吗?
1条答案
按热度按时间m1m5dgzv1#
1024以下的端口需要额外的访问权限才能打开。您的应用程序没有以超级用户身份运行(这很好!)因此,它无法在443上收听。
根据您的Linux发行版,存在variety of ways to allow a particular user access to a particuar port。
我的建议是什么?不要使用任何一种。
一个人应该怎么.服务器正在生产中启动?
在应用程序前面有一个可靠且可靠的反向代理/负载均衡器。Nginx、haproxy和apache是负载平衡/反向代理软件的3个示例,它们可以使用适当的SSL证书监听443,并将请求转发到443以上的某个端口上的应用程序。
这么做的原因有很多:
如果你使用云服务提供商,他们可以提供负载均衡器。每月20美元左右的价格对于超低预算、小容量的应用程序(无论如何更适合无服务器架构)来说往往有点贵。否则,在您的应用程序面前拥有一个一致、可靠、日志记录良好且完全受管理的负载均衡器是非常值得的。(有趣的是:至少在Amazon上,可能在其他提供商上,您可以使用一个负载均衡器来托管多个不同的应用程序,并根据主机名或请求的其他属性进行区分。您还可以向lambda函数发送请求,与运行专用操作系统相比,这可以提供显著的金钱节约,更不用说您不必管理操作系统所节省的时间了)。