如何在端口 80 上运行 tomcat 8.5/删除 8080。tomcat 8.5.16,centos 7 最小安装,托管 24

Posted

技术标签:

【中文标题】如何在端口 80 上运行 tomcat 8.5/删除 8080。tomcat 8.5.16,centos 7 最小安装,托管 24【英文标题】:How to run tomcat 8.5 on port 80 / remove 8080. tomcat 8.5.16, centos 7minimal install, hosting 24 【发布时间】:2018-01-13 02:04:34 【问题描述】:

这个问题是 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

防火墙-cmd --list-all 公开(活跃) 目标:默认 icmp 块反转:否 接口:venet0 来源: 服务:dhcpv6-client ssh 端口:8001/tcp 80/tcp 20/tcp 协议: 伪装:没有 转发端口: 源端口: icmp 块: 丰富的规则:

在公共区域开放端口。

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

这里是我改变它的地方:

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

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

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

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

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

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

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

【问题讨论】:

我强烈建议不要在端口 80 上运行 tomcat,而是使用像 Apache 或 nginx 这样的反向代理。对于这种类型的部署,反向代理非常常见nginx.com/resources/admin-guide/reverse-proxy Tomcat Webapp on port 80的可能重复 这不是重复的,因为其他选项都不起作用。当我不需要的时候为什么要运行 Apache?我读过有办法只运行tomcat吗?这就是我想要做的我想节省资源以最小的负载运行大型业务应用程序,同时保持安全性。我不会从 nginx 开始,因为研究中的 httpd 性能更好。请详细说明并仅提供一个有效的答案,因为我已经尝试了 20 多个教程但均未成功。 在 linux 上,低于 1000 的端口是特权端口,需要以 root 身份运行。 Tomcat 永远不应该以 root 身份运行,因为如果有人在您的应用程序中发现了漏洞,他们将获得完整的系统访问权限。您真的确实想使用反向代理并将tomcat留在8080 serverfault.com/questions/835861/… 虽然我现在已经使用 iptables 转发了我的端口,但我已经做了更多的研究,我现在明白反向代理会增加更多的安全性。谢谢这是一个很好的视频解释:youtube.com/watch?v=2fL8Otb9mTE 【参考方案1】:

您必须在 Linux 上启用 AUTHBIND 才能让 tomcat 使用像 80 这样的特权端口,因此请在 /etc/default/tomcat8 文件中设置 AUTHBIND=yes

另一种解决方案可能是,使用默认端口(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

【讨论】:

/etc/default/中没有tomcat8文件?我有 nss 和 useradd 文件 看看这个指南:blog.webhosting.net/… 谢谢,看起来很有希望,因为我还没有尝试过但是现在需要去上班,所以我回来后会尽快尝试。我会让你知道它是怎么回事:) 我尝试了 Authbind 方法和 2 个教程,但没有成功。找不到错误的解决方案。然而,我现在已经使用 iptables 来转发端口。使用以下命令: Iptables -L (列出所有规则) iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 Iptables -L (检查规则添加) yum install iptables-services systemctl启用 iptables 服务 iptables 保存【参考方案2】:

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

setsebool httpd_can_network_connect true -P

【讨论】:

以上是关于如何在端口 80 上运行 tomcat 8.5/删除 8080。tomcat 8.5.16,centos 7 最小安装,托管 24的主要内容,如果未能解决你的问题,请参考以下文章

在端口 80 上为 Tomcat 和在 8080 上的 Apache 使用相同的 SSL 证书

如何在端口 80 上运行 nexus sonatype?

如何将默认 80 端口更改为我的域名的 tomcat 8080

如何让tomcat服务器运行在80端口,并且无需输入项目名即可访问项目

修改apache tomcat默认启动端口为80

修改apache tomcat默认启动端口为80