【问题标题】:Mod_jk and Tomcat stuck at Sending ReplyMod_jk 和 Tomcat 卡在发送回复
【发布时间】:2021-04-15 21:36:59
【问题描述】:

目前,工作中的服务器性能不佳,而且它的设置方式也不理想。出于这个原因,我正在尝试寻找一种新的方法来做一些希望对性能和部署都有帮助的事情。

我决定的方法是为我们的 webapps 使用 tomcat 实例(目前有两个,因此每个 webapp 都有一个实例)并使用 Apache 作为“前端”。我没有这方面的经验,所以我在这里和那里遇到问题是正常的,但到目前为止我已经设法解决了这个问题。

我期望从 mysite.com 索引页面重定向到 mysite.com/service1 或 mysite.com/service2。 Service1 设置在测试服务器的 8080 端口和 service2 的 8081。我昨天安装了 Apache2 和 mod_jk,并使用 mysite.com 的内容设置了 apache。今天开始配置,结果如下:

workers.properties

worker.list=s1

worker.s1.type=ajp13
worker.s1.port=8009

#host is localhost by default according to the documentation

jk.load

LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so

JkWorkersFile /etc/apache2/workers.properties

JkLogFile /var/log/apache2/mod_jk.log
JkLogLevel debug
JkMount /service1/* s1

Service1 的 server.xml 连接器(其余全部默认)

<Connector protocol="AJP/1.3" port="8009" redirectPort="8443" />

我有更多,但由于错误,我退了一步,现在只尝试了一个 tomcat。我将添加第二个 tomcat 和一个负载均衡器。

好的,怎么回事?

我可以毫无问题地访问我们系统的服务器和索引页面。问题是当我尝试重定向到 service1 时。它只是加载而没有响应,但如果我尝试通过端口 8080 直接访问 service1,它可以正常工作(我厌倦了注释掉这个连接器。没有运气)。

查看服务器状态,我看到请求停留在发送回复,并且在 mod_jk.log 中我看到工作人员正确匹配请求。因此,虽然我的配置似乎是正确的,但在两者之间发生了一些事情。我真的不知道它是否与 Apache、Tomcat 或 Mod_jk 有关。我还尝试遵循几个如何做到这一点的指南,但所有这些都让我进入了 404。环顾四周,不幸的是,ServerFault 没有发现太多信息,所以我现在才问。

我错过了什么吗?我应该只使用另一种方法吗?我对此很陌生,现在我很茫然。配置和日志显示并没有什么问题(乍一看,至少......)所以我完全确定我的案例 scneario 是否可以使用 mod_jk ......诚实地运行它并尝试使用代理是在这一点上非常诱人,但如果我是,我宁愿知道我错在哪里。

附加信息:在 Ubuntu Server 18.04 上运行,最新的 apache2 和 mod_jk 可用于 apt(截至 4 月 14 日)、java 1.8 和 Tomcat 8.5.64。

【问题讨论】:

  • secretRequired="false" 添加到连接器的配置中:默认值为true(参见documentation)。检查日志以查看连接器是否正确启动。
  • 我不敢相信我什至没有想过检查 tomcat 的文档。我更确定这是一个 Apache 的东西......我想从技术上讲它也是。你能回答我可以接受吗?生病也看看秘密,它可能会很方便添加。谢谢!
  • 虽然从技术上讲,这个问题在很难找到答案之前就已经被问过了,除非你知道解决方案。

标签: apache tomcat mod-jk


【解决方案1】:

去年 Tomcat 发生了变化(从版本 8.5.51 和版本 9.0.31),它为 AJP 连接器引入了 secretRequired 属性,默认为 true(参见 documentation)。因此,您可以:

  • 在 AJP 连接器和 mod_jk 之间添加共享密钥

  • 或将secretRequired="false" 添加到 AJP 连接器:

    <Connector protocol="AJP/1.3" port="8009" secretRequired="false" redirectPort="8443" />
    

备注: AJP 是一个非常古老的协议,很少使用。由于您的安装非常新,您可以考虑直接使用 HTTP(参见this talk)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 2013-12-11
    • 2020-09-19
    • 2017-07-18
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多