如何在 server.xml 中配置 uriworkermap.properties 以实现 Apache - Tomcat 集成?

如何在 server.xml 中配置 uriworkermap.properties 以实现 Apache - Tomcat 集成?

我即将完成我的第一个自定义安装,我可以“尝试一下”...我正在按照 Apache Tomcat 的安装进行操作,并且两个服务器并排工作。我的 Apache 服务器配置为公共 IP,并将 HTML 和 XML 页面传送到互联网。

我的 Tomcat 与 localhost:8080 一起工作,我可以执行示例 JSP、Servlets、Applets 等。

现在我正在进行互连,以便 Tomcat 可以为 JSP 和后端 DB 处理 Apache 请求。我找到了 Tomcat 连接器,我可以从日志中验证 URL 是否来自互联网,因为它记录在 Apache 日志中,然后发送到 Tomcat,因为我可以在其日志和解析出的组件中看到 URL。到目前为止,一切顺利……没有发生的是回程——响应。

浏览器现在收到 503 服务不可用响应(巨大的进展/成功),我可以看到日志中转储的 ascii/hex 响应。

我认为缺少的部分是将规则配置到服务器配置中。这就是安装文档变得非常模糊的地方。我上网寻找答案,但得到的答案都是 IIS 答案,这并不适用于我的 Apache。

我认为这些规则是正确的,但我需要知道如何“将它们放入服务器配置中”。我假设文件位于存储我的workers.properties的conf /文件夹中,我猜引用位于“server.xml”中--这两点正确吗?它位于server.xml的哪个部分,配置节点的格式如何?

如果我的问题需要更多细节,请回复,我会提供更多信息。

  • Apache 2.2
  • Windows XP 5.1.26(较旧但已安装所有 SP)
  • Tomcat 5.2.7
  • Java / JRE / JSDK 等都是~1.4.x、1.5.x 和 1.6.x(如果需要的话我必须对此进行进一步挖掘)。
  • 连接器是 1.7(我认为)配置为 AJP1.3
  • 所有标准端口
  • 防火墙是 Netgear,带端口转发
  • 用户 ID / 密码是不是默认
  • 其他的东西 ????

此外,如果有关于调试/追踪此问题的更多提示 - 我希望为我的客户记录下来。

答案1

严重误解了问题的标题 - 漫长的一天。您正在寻找的命令指令是这样的:

JkMountFile

您可以将此指令放入您的 httpd.conf 中(或根据您的设置方式放入单独的 mod_jk.conf 中)

来自Apache 文档

包含从上下文到 Tomcat worker 的多个映射的文件。它通常称为 uriworkermap.properties。有关继承规则,请参阅:JkMountCopy。没有默认值。


如果有人感兴趣的话我就把它留在这里。

因此,由于您有一个workers.properties,因此您可能正在使用mod_jk(mod_proxy_ajp* 已被弃用)。workers.properties 实际上是mod_jk 配置的一部分。

是的,mod_jk 的文档非常简洁。因此,我将以我的生产配置为例向您展示 - 您可能需要稍微修改它,因为我们运行的是 *nix 机器,但概念是一样的。

  1. 您的 httpd.conf 应该有类似以下内容:这告诉 apache 包含一个单独的 mod_jk 配置文件(您实际上可以将这些指令直接放在 httpd.conf 中,但是...我喜欢模块化)。然后配置别名和 jsp 文件的挂载点。

    Include <path_to_mod_jk.conf>
    <VirtualHost *:80>
    JkAutoAlias /usr/tomcat/webapps
    JkMount /<your_webapp>/*.jsp <your_worker>
    
  2. 你的 mod_jk.conf 看起来应该像这样:

在这里您可以为 apache、日志、工作者文件等设置所有通用 mod_jk 设置。

    #MOD_JK Config File
    JkWorkersFile <path_to_your_workers.properties>
    JkLogFile /var/log/httpd/mod_jk.log
    JkLogLevel error
    JkShmFile /var/run/mod_jk.shm

3. 最后,您应该有一个类似于以下内容的workers.properties:最后,我们进入配置的核心部分。这是您设置工人的地方。选项非常直观。

    worker.<your_worker_name>.type=ajp13
    worker.list=<your_worker_name>
    #Worker Config
    worker.<your_worker_name>.host=127.0.0.1
    worker.<your_worker_name>.port=8009
  • 是的,我仍然在生产中运行它,尽管我们正在启动一个现代化项目,该项目可能会结束 mod_jk 并迁移到 mod_proxy_ajp

相关内容