代码之家  ›  专栏  ›  技术社区  ›  Luis González

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

  •  3
  • Luis González  · 技术社区  · 8 年前

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

    nvm use 0.12.7
    sails lift
    

    默认情况下,Sails使用端口1337,但对于生产环境,我们将其更改为443。问题是此端口需要root权限,并且仅为一个用户安装NVM。所以如果我尝试sudo saves lift,我会得到一个错误提示 未安装风帆 .

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

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

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

    在这种情况下,最佳做法是什么?

    提前谢谢。

    2 回复  |  直到 8 年前
        1
  •  4
  •   Daniel    7 年前

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

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

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

        2
  •  0
  •   Luis González    8 年前

    我通过以下方式解决了这个问题。

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

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

    你觉得这个解决方案怎么样?