Tomcat配置80端口访问

1.修改server.xml

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

将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端口访问

你可能感兴趣的:(Tomcat配置80端口访问)