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

时间:2016-07-21 07:26:05

标签: javascript node.js sails.js iptables ports

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

nvm use 0.12.7
sails lift

Sails默认使用端口1337,但对于生产环境,我们将其更改为443.问题是此端口需要root权限,并且只为一个用户安装NVM。因此,如果我尝试sudo sails lift,我会收到一条错误消息,指出 sails未安装

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

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

  1. 使用iptables转发端口。问题是socket无法使用代理。
  2. 更改端口的权限。如果节点存在漏洞,则可能存在安全风险。
  3. 使用root安装NVM。问题是我使用NVM来避免使用sudo来部署或运行​​应用程序,这将迫使我这样做。
  4. 在这种情况下,最佳做法是什么?

    提前致谢。

2 个答案:

答案 0 :(得分:0)

我已解决了以下问题。

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

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以下的端口。

您对此解决方案有何看法?

答案 1 :(得分:0)

出于安全考虑,建议不要让NodeJS以root权限运行。

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

在此链接上,您可以找到有关将nginx配置为反向代理的更多信息,它来自官方文档: https://www.nginx.com/resources/admin-guide/reverse-proxy/