linux tomcat 配置80端口,Tomcat配置80端口访问

在Linux中,由于安全原因,普通用户无法直接让Tomcat监听80端口。通过修改server.xml将端口改为80后,访问失败,报错'Permission denied'。解决办法是使用iptables进行端口转发,将80端口的请求重定向到8080端口,命令为:`iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080`。执行后无需修改8080端口,即可通过80端口访问Web应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.修改server.xml

按照常理来说,为了访问时不带默认的8080端口号访问,修改端口号为80就行,因为http请求端口号默认是80。

3b62e3aa1351

将port="8080"改为port=“80”即可,访问方式:http://www.yuming/appDir

可是Linux下就不行了,配置完成80端口后,测试访问不到web项目,无法访问

EVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[HTTP/1.1-80]]

org.apache.catalina.LifecycleException: Protocol handler initialization failed

at org.apache.catalina.connector.Connector.initInternal(Connector.java:1077)

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)

at org.apache.catalina.core.StandardService.initInternal(StandardService.java:552)

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)

at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:848)

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)

at org.apache.catalina.startup.Catalina.load(Catalina.java:639)

at org.apache.catalina.startup.Catalina.load(Catalina.java:662)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:302)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:472)

Caused by: java.net.SocketException: Permission denied

at sun.nio.ch.Net.bind0(Native Method)

at sun.nio.ch.Net.bind(Net.java:444)

at sun.nio.ch.Net.bind(Net.java:436)

at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:225)

at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)

at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:221)

at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1118)

at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:222)

at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:587)

at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74)

at org.apache.catalina.connector.Connector.initInternal(Connor.java:1075)

... 13 more

2.排错方案

首先端口是否占用:netstat -ano

查看一番并没有80端口在使用

端口并非被占用,Permission denied是说明权限问题

问题所在:对于Linux系统而言,1024以下的端口,普通用户是无法使用的,除非有ROOT权限

3.如何解决

解决方案:实现端口跳转,当用户访问tomcat的80端口,我们让他跳转到8080端口

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

命令解释

-t nat : 指出要操作的表(这里指出是要操作nat表)

-A PREROUTING : A 代表添加.表示我要在PREROUTING(路由前规则) 中新增一个规则

–-dport 80 : 指定请求端口号为80

-j REDIRECT:重定向,主要用于实现端口重定向

–-to-port 8080 : 转发后的端口号为8080

上面的命令需要root权限,操作完以后就可以了

执行完后保存:service iptables save

这种保存方式对于Ubuntn是无效的,提示找不到iptables,有待查证和解决。。

我只执行了上面的iptables命令就成功了,重启多次发现也没有失效

提示:设置了端口转发,那么默认8080端口就不用修改了!

参考博文

Tomcat配置80端口访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值