简介
当我用在使用linux非root用户进行应用发布时,如遇到应用程序需要占用80端口时总会由于权限不足遇到java.net.BindException: Permission denied:80
的错误报出。
Linux为保证系统安全,限制了非root用户对1024以下的端口进行占用。
那么,本文将通过端口转发的方式解决80端口在Linux和MacOSX系统上占用的问题。
linux非Root用户使用80端口
linux操作系统的可以通过iptables来进行端口转发,将流向80端口的数据内部转发到大于1024的端口上。那么非root用户就可以通过占用大于1024的端口进行程序应用的功能处理。
以80转发到8080端口为例:
1 | [root@localhost ~]# sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 |
iptables -t filter -F : 为清除所有的过滤规则。
chkconfig iptables on : 设置iptables开机启动。
iptables存储文件:/etc/sysconfig/iptables
MacOSX使用80端口
MacOS操作系统下则使用pf
来进行端口转发。
pf启动时会自动装载/etc/pf.conf文件,因此,我们可以通过修改这个文件进行80端口数据的转发。
修改后的文件内容如下:
1 | scrub-anchor "com.apple/*" |
使用 pfctl使用重新加载pf.conf配置,并启动pf
1 | Jianjun:~ Jianjun$ sudo pfctl -f /etc/pf.conf |
另,关闭pf的命令为:sudo pfctl -d
观点仅代表自己,期待你的留言。