1.修改server.xml
按照常理來說,為了訪問時(shí)不帶默認(rèn)的8080端口號(hào)訪問煤惩,修改端口號(hào)為80就行嫉嘀,因?yàn)閔ttp請(qǐng)求端口號(hào)默認(rèn)是80。
將port="8080"改為port=“80”即可盟庞,訪問方式:http://www.yuming/appDir
可是Linux下就不行了吃沪,配置完成80端口后汤善,測(cè)試訪問不到web項(xiàng)目,無法訪問
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.排錯(cuò)方案
-
首先端口是否占用:
netstat -ano
查看一番并沒有80端口在使用
-
端口并非被占用,Permission denied是說明權(quán)限問題
問題所在:對(duì)于Linux系統(tǒng)而言,1024以下的端口,普通用戶是無法使用的揭朝,除非有ROOT權(quán)限
3.如何解決
- 解決方案:實(shí)現(xiàn)端口跳轉(zhuǎn)猪半,當(dāng)用戶訪問tomcat的80端口,我們讓他跳轉(zhuǎn)到8080端口
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
-
命令解釋
-t nat : 指出要操作的表(這里指出是要操作nat表)
-A PREROUTING : A 代表添加.表示我要在PREROUTING(路由前規(guī)則) 中新增一個(gè)規(guī)則
–-dport 80 : 指定請(qǐng)求端口號(hào)為80
-j REDIRECT:重定向在旱,主要用于實(shí)現(xiàn)端口重定向
–-to-port 8080 : 轉(zhuǎn)發(fā)后的端口號(hào)為8080
上面的命令需要root權(quán)限摇零,操作完以后就可以了
執(zhí)行完后保存:service iptables save
這種保存方式對(duì)于Ubuntn是無效的,提示找不到iptables,有待查證和解決桶蝎。驻仅。
我只執(zhí)行了上面的iptables命令就成功了,重啟多次發(fā)現(xiàn)也沒有失效
提示:設(shè)置了端口轉(zhuǎn)發(fā)登渣,那么默認(rèn)8080端口就不用修改了噪服!
參考博文
Tomcat配置80端口訪問