我正在运行一个 node.js 服务器,它将为端口 80 上的请求提供服务。显然,这需要应用程序以 root 身份运行(在 Linux 上)。
以这篇文章 (http://syskall.com/dont-run-node-dot-js-as-root) 为例,很明显有一些简单的方法可以让 node 以非 root 用户身份运行,但我想知道是否有人对建议的不同方法:
代码:在80端口监听建立后,使用setuid()从root下拉到非特权用户。
使用某种代理服务器将请求重定向到 >1024 端口(因此不需要 Node 以 root 身份运行)
使用 IP 表转发到另一个端口(同上 Node 不会以 root 身份运行)
谢谢
最佳答案
选项 1 要求您以 root 身份启动 Node 服务器。不理想。
选项 2 会为每个处理的请求增加开销,并向您的堆栈添加另一个故障点。
选项 3 是最简单、最有效的方法。
要实现选项 3,请将以下内容添加到您的系统初始化脚本中。 (/etc/rc.d/rc.local
在基于 RedHat 的系统上,如 AWS)。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
这会将请求从端口 80 重定向到端口 3000。
关于node.js - 如何以非 root 用户身份运行 node.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17467696/