我可以使用低特权运行Node.JS吗?

我想运行一个低特权用户的节点,这可能吗? 我需要使用框架Express.js

是。 有很多解决scheme可以做到这一点,这取决于您的具体需求。

如果要在端口80上运行节点,则可以使用nginx(不支持WebSockets)或haproxy 。 但也许最快最肮脏的是使用iptables将端口80redirect到您select的端口:

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8003 sudo iptables -t nat -L 

当你快乐的时候,保存configuration并确保iptables在启动时开启

 sudo service iptables save sudo chkconfig iptables on 

要以非root用户身份自动启动nodejs服务,并在失败时重新启动它,可以使用如下脚本来启动:

 #!upstart description "nodeapp" author "you" start on started mountall stop on shutdown # Automatically Respawn: respawn respawn limit 99 5 script export HOME="/home/user/" exec sudo -u user /usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log end script 

如果您使用的是Amazon EC2安装,或者出现sudo: sorry, you must have a tty to run sudo错误sudo: sorry, you must have a tty to run sudo ,那么您可以使用以下命令replace您的exec命令:

 #!upstart description "nodeapp" author "you" start on started mountall stop on shutdown # Automatically Respawn: respawn respawn limit 99 5 script export HOME="/home/user/" #amazon EC2 doesn't allow sudo from script! so use su --session-command exec su --session-command="/usr/local/bin/node /home/user/app.js 2>&1 >> /home/user/app.log" user & end script 

而且,你没有问这个问题,而是为了保持它永远运行,看看monit! 这里有一个有用的指南,用upstart和monit设置node.js。