只有root用户才能使用0-1024之内的端口,普通用户想使用1024之内的端口,方法有二:
1.使用iptables转发数据包,
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
2.iptables毕竟是转发,感觉不爽。第二种方法是,root可以让普通用户以root的身份执行程序,即给应用的模式加上s位,但程序运行之后,进程的用户是root,因此,启动程序并占用端口后,需要修改进程的用户和组。
以nodejs为例:
chmod u+s /usr/local/bin/node
1.使用iptables转发数据包,
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
2.iptables毕竟是转发,感觉不爽。第二种方法是,root可以让普通用户以root的身份执行程序,即给应用的模式加上s位,但程序运行之后,进程的用户是root,因此,启动程序并占用端口后,需要修改进程的用户和组。
以nodejs为例:
chmod u+s /usr/local/bin/node
require('http').createServer(require('express')()).listen(80, function(){
if (process.getgid && process.setgid){ //windows 下无此方法
process.setuid('jim');
process.setgid('jim');
}
});