美文网首页
Tomcat配置80端口访问

Tomcat配置80端口访问

作者: 会微笑的leo | 来源:发表于2020-10-12 15:40 被阅读0次

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

          本文链接:https://www.haomeiwen.com/subject/nmtppktx.html