2

这个问题是 Tomcat 8.5 独有的,其他答案是针对 7 的,并且不像描述的那样工作

首先,我已经研究了 20 个小时的 tomcat 文档和在线问题。我已经从头开始构建服务器大约十次来学习该过程并尝试编写清晰的指南,以使服务器启动并运行以运行多个 Spring Boot Web 应用程序。

我目前无法让 tomcat 在端口 80 上运行,因此域名末尾没有“8080”。它在端口 8080 上运行良好。

“netstat -lnp grep 80”向我展示了这个:

enterProto Recv-Q Send-Q Local Address           Foreign Address         
State       PID/Program name
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               
LISTEN      449/mysqld
tcp        0      0 0.0.0.0:111             0.0.0.0:*               
LISTEN      1/init
tcp        0      0 0.0.0.0:22              0.0.0.0:*               
LISTEN      143/sshd
tcp6       0      0 :::8001                 :::*                    
LISTEN      139/httpd
tcp6       0      0 127.0.0.1:8005          :::*                    
LISTEN      281/java
tcp6       0      0 :::8009                 :::*                    
LISTEN      281/java
tcp6       0      0 :::21                   :::*                    
LISTEN      147/vsftpd
tcp6       0      0 :::22                   :::*                    
LISTEN 

所以没有使用端口 80。 systemctl status tomcat.service = running

firewall-cmd --list-all public (active) 目标:默认 icmp-block-inversion:无接口:venet0 源:服务:dhcpv6-client ssh 端口:8001/tcp 80/tcp 20/tcp 协议:伪装:无转发-ports:sourceports:icmp-blocks:丰富的规则:

端口在公共区域开放。

我目前正在尝试的方法是更改​​tomcat/conf/server.xml中的端口

这是我改变它的地方:

{<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
}

nmap 和在线工具说端口已关闭,但我相信这是因为没有使用该端口。只是我读过的,所以不确定。

iptables 中也没有规则,因此没有其他端口块。

显示的网页显示“无法访问此站点”

任何帮助都将不胜感激,因为我花了 20 个小时来研究服务器设置,但仍然对如何真正检查为什么这不起作用但为什么它在端口 8080 上起作用感到困惑。

我正在尝试通过 tomcat 运行多个 webapps。我计划将主机详细信息添加到 server.xml 的底部,我已经在端口 8080 上成功完成了此操作,但在端口 80 上没有与上述结果相同。

这是与以前的问题类似的问题,但答案不起作用我已经全部尝试过了。

4

2 回答 2

7

你必须在 Linux 上启用 AUTHBIND 才能让 tomcat 使用像 80 这样的特权端口,所以AUTHBIND=yes/etc/default/tomcat8file 中设置。

另一种解决方案可能是,使用默认端口(80)并以这种方式使用 iptables 将所有请求从端口 80 重定向到端口 8080:

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
于 2017-08-05T05:33:25.967 回答
0

Centos7 最小安装可能开启了 SELinux,因此您必须在提升的 shell 中执行以下命令:

setsebool httpd_can_network_connect true -P
于 2017-08-08T04:07:11.570 回答