Tomcat在非Root用户下使用80端口启动报错解决办法

来源:互联网 发布:sql删除数据库命令 编辑:程序博客网 时间:2024/05/22 14:09

         Linux系统中,Tomcat在非Root用户下使用80端口启动时会报“java.net.BindException: 权限不够”错误。而造成该问题的原因是在Linux中非Root用户是没有权限使用1024以下的端口的。然而因为系统安全性的要求,Tomcat必须得使用非Root用户启动并且还需要使用80端口进行访问,那么是否有办法实现该需求呢?答案是有的,通过端口转发功能就可以实现该需求,以下通过iptables进行端口转发:

        

        1、配置Tomcat的访问端口为8080,然后使用非Root用户启动Tomcat容器。

       

        2、登录到Root用户,添加如下两条防火墙规则:

iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-port 8080iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

第一条则使得本机可以使用http://127.0.0.1:80访问Tomcat服务器,第二条规则使得外部机器可以使用80端口访问Tomcat服务器。

        

         3、确保linux系统启用IP包转发功能(CentOS默认关闭,Ubuntu默认启用),修改/etc/sysctl.conf

# Controls IP packet forwardingnet.ipv4.ip_forward = 1

             然后执行命令使得上面的改动生效

sysctl -p /etc/sysctl.conf

          4、此时部署的Tomcat应用可以通过80端口访问了。


         注意:这里使用iptables管理规则需要确保其它类型的防火墙服务已经关闭(如ubantu的ufw),否则的话即使使用iptable设置了规则也不能访问,原因是被其它防火墙拦截了。

阅读全文
0 0