【发布时间】:2016-11-24 15:49:05
【问题描述】:
我正在使用 NVM 开发 Sails Web 应用程序。我已经通过 NVM 安装了 node v0.12.7,我使用这个版本来运行网站。
nvm use 0.12.7
sails lift
Sails 默认使用 1337 端口,但在生产环境中我们将其更改为 443。问题是该端口需要 root 权限,并且 NVM 只为一个用户安装。因此,如果我尝试 sudosails lift,我会收到一条错误消息,提示 sails 未安装。
解决这个问题最有效的方法是什么?如何使用 NVM 开发和部署我的项目?
我想过不同的可能解决方案,但我不知道它们是好的还是不安全的。
- 使用
iptables转发端口。问题是由于代理,套接字无法工作。 - 更改端口的权限。如果节点存在漏洞,则可能存在安全风险。
- 使用 root 安装 NVM。问题是我使用 NVM 来避免使用
sudo来部署或运行应用程序,这将迫使我这样做。
在这种情况下有哪些最佳做法?
提前致谢。
【问题讨论】:
-
为什么解决方案 1 不起作用?端口转发不是代理。无论如何,我首选的解决方案是始终拥有经过实战考验的前端服务器,例如 nginx 或 apache2,然后使用它们来反向代理 Web 应用程序。还有其他优点,但对我来说主要原因是安全性——它为黑客增加了一层。
-
同意 - 通过 nginx 的反向代理非常适合这种场景,包括套接字。我根本不会考虑使用选项 2 和 3。选项 1 或我们的新选项 4 = nginx/apache/lighttpd 等。如果您遇到任何问题并决定走这条路,很高兴分享我的 nginx 配置。
-
如果您指的是 websockets(如 socket.io),那么反向代理有点棘手但可行(我以前做过)。只需谷歌搜索您选择的服务器的 websocket 代理。尽管您可能需要在生产服务器上使用更新版本的服务器。
标签: javascript node.js sails.js iptables ports