tomcat使用80端口无法访问

刀西苔 2016-06-15 03:46:29
Tomcat一开始用8090端口,可以正常访问应用。
但是我把端口号改成80,并且用root正常启动后,却不能访问了。

1. 我看了catalina.out日志,ps查看了tomcat进程,确认启动成功了。

2. 我用netstat -ant查看了已用端口,没有发现80端口被其他进程占用。

3. 并且我还查看了80端口是属于JAVA进程的:
# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 28630 root 43u IPv6 2765812 0t0 TCP *:http (LISTEN)

可是,无论是通过 IP:80 还是 域名:80,都无法访问。
火狐浏览器报出消息:
Network Error (tcp_error)

A communication error occurred: ""
The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.


我在网上看到有人说可以用端口转发,我也尝试了一下:
root账号执行: iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8090
且tomcat端口改回原来的8090,然后正常启动tomcat。结果还是不行。
通过8090端口访问就能成功,通过80端口访问就失败,根本没有转发到8090端口啊!

然后我查看了一下80端口的转发情况:
# iptables -t nat -L -n | grep 80
REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8090
确实没问题啊。

我都搞了好几天了还没搞出来,头都要炸了。跪求解答啊!!!
...全文
2800 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
刀西苔 2016-06-16
  • 打赏
  • 举报
回复
又问了一些人,说是电信默认禁止了80端口。其他网站能够不输入端口就能访问,应该是因为这些网站都是经营性网站,域名和IP都做了备案。而我虽然做了域名备案,但是备案时用的IP和现在的IP不一样,并且备案的性质是个人、非经营性网站,所以不能开放80端口。 不过还是谢谢大家了!都会给分的!
qq_15915835 2016-06-16
  • 打赏
  • 举报
回复
服务端没问题就找找客户端的问题呗,客户端的防火墙什么的,可以换其他机器访问试试
刀西苔 2016-06-16
  • 打赏
  • 举报
回复
引用 7 楼 qq_15915835 的回复:
明显是80连上了 用elinks 访问下网站的80端口试试
我在服务器上安装了elinks,然后确实可以用80端口访问了!包括用 IP:80 域名:80 都是可以访问的! 但是为什么在其他电脑上,就不能访问了呢?
晓风吹雾 2016-06-15
  • 打赏
  • 举报
回复
引用 8 楼 yingprince 的回复:
[quote=引用 5 楼 shnulaa 的回复:] 还有你80绑定的地址 是什么 netstat -tlnp tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2062/nginx 0 0.0.0.0 是任何访问 tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 2062/nginx 127.0.0.1是本地 访问 你看下
80端口绑定的是java进程。pid和tomcat的pid一致。 # netstat -tlnp|grep 80 tcp 0 0 :::80 :::* LISTEN 32711/java # ps -ef |grep tomcat root 362 28535 0 17:04 pts/0 00:00:00 grep tomcat root 32711 1 22 17:04 pts/3 00:00:07 /usr/bin/java -Djava.util.logging.config.file=/home/tester5/wechat/apache-tomcat-7.0.63/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/home/tester5/wechat/apache-tomcat-7.0.63/endorsed -classpath /home/tester5/wechat/apache-tomcat-7.0.63/bin/bootstrap.jar:/home/tester5/wechat/apache-tomcat-7.0.63/bin/tomcat-juli.jar -Dcatalina.base=/home/tester5/wechat/apache-tomcat-7.0.63 -Dcatalina.home=/home/tester5/wechat/apache-tomcat-7.0.63 -Djava.io.tmpdir=/home/tester5/wechat/apache-tomcat-7.0.63/temp org.apache.catalina.startup.Bootstrap start [/quote] # lsof -i:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 28630 root 43u IPv6 2765812 0t0 TCP *:http (LISTEN) TYPE IPv6 tcp 0 0 :::80 :::* LISTEN 32711/java 0 :::80 :::* -> 这是什么地址? IPv6?
刀西苔 2016-06-15
  • 打赏
  • 举报
回复
引用 5 楼 shnulaa 的回复:
还有你80绑定的地址 是什么 netstat -tlnp tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2062/nginx 0 0.0.0.0 是任何访问 tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 2062/nginx 127.0.0.1是本地 访问 你看下
80端口绑定的是java进程。pid和tomcat的pid一致。 # netstat -tlnp|grep 80 tcp 0 0 :::80 :::* LISTEN 32711/java # ps -ef |grep tomcat root 362 28535 0 17:04 pts/0 00:00:00 grep tomcat root 32711 1 22 17:04 pts/3 00:00:07 /usr/bin/java -Djava.util.logging.config.file=/home/tester5/wechat/apache-tomcat-7.0.63/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/home/tester5/wechat/apache-tomcat-7.0.63/endorsed -classpath /home/tester5/wechat/apache-tomcat-7.0.63/bin/bootstrap.jar:/home/tester5/wechat/apache-tomcat-7.0.63/bin/tomcat-juli.jar -Dcatalina.base=/home/tester5/wechat/apache-tomcat-7.0.63 -Dcatalina.home=/home/tester5/wechat/apache-tomcat-7.0.63 -Djava.io.tmpdir=/home/tester5/wechat/apache-tomcat-7.0.63/temp org.apache.catalina.startup.Bootstrap start
qq_15915835 2016-06-15
  • 打赏
  • 举报
回复
明显是80连上了 用elinks 访问下网站的80端口试试
刀西苔 2016-06-15
  • 打赏
  • 举报
回复
引用 4 楼 yingprince 的回复:
[quote=引用 2 楼 qq_15915835 的回复:] 80端口默认只有root用户可以使用,可以在服务器上试试telnet 127.0.0.1 80 然后把防火墙什么的都关掉
防火墙本来就已经关掉了。我按你说的执行了: # telnet 127.0.0.1 80 Trying 127.0.0.1... Connected to localhost (127.0.0.1). Escape character is '^]'. Connection closed by foreign host. 是连不上的。[/quote] 不过,我在开8090端口的时候,也试了一下: # telnet 127.0.0.1 8090 Trying 127.0.0.1... Connected to localhost (127.0.0.1). Escape character is '^]'. Connection closed by foreign host. 结果也是连不上。但是,网浏览器中访问8090端口是正常的。
晓风吹雾 2016-06-15
  • 打赏
  • 举报
回复
还有你80绑定的地址 是什么 netstat -tlnp tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2062/nginx 0 0.0.0.0 是任何访问 tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 2062/nginx 127.0.0.1是本地 访问 你看下
刀西苔 2016-06-15
  • 打赏
  • 举报
回复
引用 2 楼 qq_15915835 的回复:
80端口默认只有root用户可以使用,可以在服务器上试试telnet 127.0.0.1 80 然后把防火墙什么的都关掉
防火墙本来就已经关掉了。我按你说的执行了: # telnet 127.0.0.1 80 Trying 127.0.0.1... Connected to localhost (127.0.0.1). Escape character is '^]'. Connection closed by foreign host. 是连不上的。
晓风吹雾 2016-06-15
  • 打赏
  • 举报
回复
上面说错了,是非root用户 再确认一下IP转发 /etc/sysctl.conf net.ipv4.ip_forward = 1
qq_15915835 2016-06-15
  • 打赏
  • 举报
回复
80端口默认只有root用户可以使用,可以在服务器上试试telnet 127.0.0.1 80 然后把防火墙什么的都关掉
晓风吹雾 2016-06-15
  • 打赏
  • 举报
回复
我记得默认root 下 80端口是不允许占用的,解决方法, 新建tomcat 用户,开8080,代理服务器或iptables转发(8080->80)

50,535

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧