在端口 80 上运行 Apache Tomcat 8

在端口 80 上运行 Apache Tomcat 8

我想在端口 80 而不是 8080 上安装/配置 apache tomcat。我在端口 80 上运行 Nginx,并且我已停止 Nginx 服务。

我分别将 Shutdown 和 Connector 端口从 8005 更改为 8008,将 8080 更改为 80。当我使用 ./bin/startup.sh 时,它没有显示任何错误,并且在 catlina.out 中显示“org.apache.catalina.startup.Catalina.start 服务器在 1405 毫秒内启动”,但是当我访问http://本地主机它说 ERR_CONNECTION_REFUSED

如果我做错了什么,请建议我。

谢谢

答案1

这个问题经常出现。假设您想使用非 root 方法。

使用authbind,除非您想使用 IP6。

使用iptables并将端口 80 重定向至 8080。

设置 Apache/Nginx 作为反向代理需要更长的时间并且会增加不必要的复杂性。

答案2

如果您希望 tomcat 绑定到低于 1024 的端口,那么简单的答案就是您必须以 root 身份运行(在 Unix 系统上)。这是一个非常糟糕的主意。

然而,有几种方法可以解决这个问题。

一种替代方法是在端口 80(和 443)上安装一个常规 Web 服务器,并使用多种方法之一将流量转发到 tomcat。我不熟悉 nginx,但可能有办法使用它。在 Apache httpd 上,您可以使用 mod_jk、mod_proxy_ajp 或 mod_proxy_http 将请求从 Apache 转发到 tomcat。当然,您需要对 tomcat 进行防火墙保护,这样除非请求经过 Apache,否则无法访问它。

如果你只想运行 tomcat,而不运行其他任何东西,你可能需要研究一下剛果,它可以以 root 身份启动 tomcat,然后在绑定端口后将其降级为非特权用户。查看评论:我从未使用过它,至少 @raupach 反对它(它的年龄)。您也可以简单地使用 iptables 将端口 8080 转发到端口 80。但是,您应该检查这是否会让 tomcat 意识到它在端口 80 上收到请求:如果 tomcat 仍然认为它在 8080 上应答,它将生成命中 8080 而不是 80 的 URL - iptables 是另一种我从未使用过的技术。

第一个配置选项(反向代理)需要做更多工作,但具有更多优势 - 例如,您可以使用 mod_rewrite 和其他好东西。我比 jsvc 更喜欢它。您还可以通过 Apache 提供静态文件,而无需打扰 tomcat。这很容易成为您性能调优的第一步。

答案3

如果你尝试以非 root 用户身份运行 catalina.sh。你不能以普通用户身份绑定到端口 80。

但是,如果您使用发行版提供的 tomcat 包,这应该不是问题。

相关内容