如何在生产环境中处理 NVM?

How deal with NVM in production environments?

我正在使用 NVM 开发 Sails Web 应用程序。我已经通过 NVM 安装了 node v0.12.7,我将这个版本用于 运行 网站。

nvm use 0.12.7
sails lift

Sails默认使用1337端口,生产环境我们改成443端口。问题是这个端口需要root权限,而且NVM只为一个用户安装。因此,如果我尝试使用 sudo sails lift,我会收到一条错误消息,提示未安装 sails

处理该问题最有效的方法是什么?如何使用 NVM 开发和部署我的项目?

我想过不同的可能解决方案,但我不知道它们是好的还是不安全的。

  1. 使用 iptables 转发端口。问题是套接字无法工作,因为代理。
  2. 更改端口权限。如果节点存在漏洞,可能存在安全风险。
  3. 使用 root 安装 NVM。问题是我使用 NVM 来避免使用 sudo 部署或 运行 应用程序,这将迫使我这样做。

这方面的最佳做法是什么?

提前致谢。

我已经解决了以下问题。

我已经更改了节点的所有者和组。

which node # gives a string with the path to node
sudo chown root:root path_to_node
sudo chmod u+s path_to_node

这样,任何执行节点的用户都将以所有者权限执行。并且在这种情况下,所有者是 root,其权限足以使用 1024 以下的端口。

您如何看待这个解决方案?

出于安全原因,不建议拥有 NodeJS 运行 root 权限。

您可以尝试 运行 将您的应用程序放在其他用户可访问的端口上,而无需 root 权限,然后在 443 端口上配置反向代理。这就是我使用 nginx 作为反向代理所做的,它可以轻松配置以执行此任务以及处理 SSL 流量。

在这个link你可以找到更多关于配置nginx作为反向代理的信息,它来自官方文档: https://www.nginx.com/resources/admin-guide/reverse-proxy/