操作系统 mac 10.12.5 有这么一段代码
var http = require("http");
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write("Hello World!");
response.end();
}).listen(80);
启动之后报 EACCESS 搜索这个帖子可知 https://cnodejs.org/topic/50220732f767cc9a51e9fcef ,加sudo 可以解决这个问题 里面还有一个方法是iptables
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
sudo iptables-save
但是发现sierra下没有iptables这个命令,那应该用什么方法代替呢?因为不想每次启动node都敲密码
我记得是是因为内置的apache占用了80端口
@i5ting 用sudo是可以运行的,但是我并不想每一次启动都输入密码
@godghdai chown root.root /path/to/application 有点危险不想这样做 chmod u+s /path/to/application 无效
第二种方法: CAP_NET_BINDSERVICE -bash: setcap: command not found
第三种方法: Port Forwarding 这就是我正文说的,sierra下没有iptables这个命令
第四种方法: 没看懂
总体说来我是想用第三种方法的,毕竟风险最小,但找不到方法。
反向代理转呀
@i5ting 你的意思是用nginx吗?这也是一种方法,nginx重启的频率比较低,有无更好一点的方法
@p2227 nginx占用80,然后反向代理到你的3000端口