以非 root 身份运行 HTTPS Node.js 服务器

以非 root 身份运行 HTTPS Node.js 服务器

通过 HTTPS 为应用程序提供服务的 Node.js 服务器是否可以以非 root 用户身份运行?问题是似乎没有办法运行类似这样的脚本不需要 sudo,因为它必须访问证书。

我知道在启动 Node 后可以放弃 root 权限,但如果可能的话我想避免这种情况,因为它可能会导致一些意外行为。

答案1

证书问题很容易解决,只需将其分配给您的用户并相应地调整权限即可。

但是您会发现,您无法让您的服务器监听 HTTPS 端口 443,因为它是一个特权端口(<1024)。

您可以通过多种方式解决此问题,例如:

  • 前端的反向代理(Apache / nginx)将请求转发到监听更高端口的nodejs

  • 端口转发 443 -> 1443(或任何高于 1024 的端口)并且 nodejs 在 1443 上监听

  • 使用 Linux 功能(CAP_NET_ADMIN IIRC)。

可能还有其他方法。

相关内容