使用端口转发解决nodejs在80端口上的监听权限问题
2016-12-22 23:51
543 查看
由于linux的系统限制,普通用户是无法打开1024以下端口的,这里面就包括http的默认端口80,这就使得很多用户使用root权限来执行node,这带来了不可预计的安全问题,所以这并不是一个好办法。
其实我们可以使用iptables的端口转发功能来解决这个问题:
1,首先将node的主程序绑定到高于1024端口,比如8090,这样普通用户就可以启动这个http server了,只不过不是在默认的80端口上监听;
2,配置iptables将80端口转发到8090上,如下命令:
[plain] view
plain copy
#iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8090
该命令的意思就是在iptable中添加一条端口转发规则,如果删除该规则,重新绑定,则先查找出:
[plain] view
plain copy
#iptables --line-numbers --list PREROUTING -t nat
然后使用行号删除:
[plain] view
plain copy
#iptables -t nat -D PREROUTING 行号
3,记得添加8090端口到iptables的INPUT ACCEPT规则中
[plain] view
plain copy
#iptables -I INPUT -p tcp --dport 8090 -j ACCEPT
4,第2步和第3步添加的这些规则,都是临时性的,重启服务器之后就无效了,所以需要保存起来
[plain] view
plain copy
#/sbin/service iptables save
端口转发配置完成。
补充:
经过上面的设置后,远程使用默认80端口访问网站没有问题,但是在本机访问就要包Connect Refused的错误,如:
[plain] view
plain copy
[use@host ~]$ wget http://localhost
--2014-04-17 11:32:41-- http://localhost/
Connecting to localhost:80... failed: Connection refused.
这是因为本地连接的端口转发与远程连接的不一样,所以我们还要做如下设置:
[plain] view
plain copy
#iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8090
#iptables -t nat -A OUTPUT -p tcp -d 本机IP --dport 80 -j DNAT --to 本机IP:8090
#/sbin/service iptables save
这样设置之后,本机就可以使用默认端口了。
参考:
1,http://blog.csdn.net/pengyouchuan/article/details/11026531
2,http://www.liugj.com/2013/04/Iptables-NAT/
原文链接
其实我们可以使用iptables的端口转发功能来解决这个问题:
1,首先将node的主程序绑定到高于1024端口,比如8090,这样普通用户就可以启动这个http server了,只不过不是在默认的80端口上监听;
2,配置iptables将80端口转发到8090上,如下命令:
[plain] view
plain copy
#iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8090
该命令的意思就是在iptable中添加一条端口转发规则,如果删除该规则,重新绑定,则先查找出:
[plain] view
plain copy
#iptables --line-numbers --list PREROUTING -t nat
然后使用行号删除:
[plain] view
plain copy
#iptables -t nat -D PREROUTING 行号
3,记得添加8090端口到iptables的INPUT ACCEPT规则中
[plain] view
plain copy
#iptables -I INPUT -p tcp --dport 8090 -j ACCEPT
4,第2步和第3步添加的这些规则,都是临时性的,重启服务器之后就无效了,所以需要保存起来
[plain] view
plain copy
#/sbin/service iptables save
端口转发配置完成。
补充:
经过上面的设置后,远程使用默认80端口访问网站没有问题,但是在本机访问就要包Connect Refused的错误,如:
[plain] view
plain copy
[use@host ~]$ wget http://localhost
--2014-04-17 11:32:41-- http://localhost/
Connecting to localhost:80... failed: Connection refused.
这是因为本地连接的端口转发与远程连接的不一样,所以我们还要做如下设置:
[plain] view
plain copy
#iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8090
#iptables -t nat -A OUTPUT -p tcp -d 本机IP --dport 80 -j DNAT --to 本机IP:8090
#/sbin/service iptables save
这样设置之后,本机就可以使用默认端口了。
参考:
1,http://blog.csdn.net/pengyouchuan/article/details/11026531
2,http://www.liugj.com/2013/04/Iptables-NAT/
原文链接
相关文章推荐
- 使用端口转发解决nodejs在80端口上的监听权限问题
- nginx监听非80端口时转发端口不正确问题
- mac os 10.10以上的开启端口转发-解决mac默认不开启1024以下端口权限问题
- Mac端口转发解决eclipse/idea/tomcat不能启动80端口的问题
- Mac使用brew安装nginx,并解决端口访问权限问题
- mac os 10.10以上的开启端口转发-解决mac默认不开启1024以下端口权限问题
- 解决 django1.2环境中使用自带的admin管理界面,配置后访问出现“你无权限修改任何东西” 的问题
- 【转载】[解决系统服务运行应用程序的权限问题]使用WTSGetActiveConsoleSessionId()的VISTA服务与桌面交互
- DBMS_SESSION.SET_CONTEXT的使用及无效权限问题的解决
- 如何使用URL跳转解决Web服务80端口被封问题
- 解决windows2003 sp1下使用sql2000的端口问题
- [原创]使用Microsoft.Web.UI.WebControls的iewc轻松解决权限树问题(无限级权限管理)4
- 解决局域网内各机器互连访问没有权限使用网络资源的问题
- Oracle10g监听端口改变后DB Control无法使用的解决方法
- “在使用Samba进行建立Wisamba无法访问,你可能没有权限使用网络”的一种问题原因及解决
- 解决asterisk下使用misdn时被SELinux干扰导致权限不足的问题
- DBMS_SESSION.SET_CONTEXT的使用及无效权限问题的解决
- .Net下使用FileUpload上传没有权限的问题解决
- SQL2005使用端口监听的问题
- RCP中使用IWorkspaceRunnable解决IResourceChangeListener监听触发多次问题