如何在 Apache 和 Tomcat 中设置使用 mod_proxy_ajp?

Agv*_*rth 5 tomcat reverse-proxy ajp apache-2.2

我想在 RHEL 5 服务器上运行 Apache 和 Tomcat,Apache 处理 Ruby on Rails 应用程序(通过 mod_rails/Passenger)和 Tomcat 处理 Java 应用程序。

在 Apache 下,每个 Rails 应用程序都有一个 URL 和 vhost。这些 URL 已经在我们的 DNS 服务器中配置为指向机器。

在Tomcat,每个Java应用程序都有这样的网址:ourserver.ourcompany.com/app1ourserver.ourcompany.com/app2,等。

服务器已经启动并运行,Tomcat 6 在端口 80 上运行并为多个 Java 应用程序提供服务。我想添加Apache并重新配置。我熟悉如何配置唯一的 Apache 服务器以使用 Passenger 托管 RoR 应用程序。我只是不知道如何让 Apache 和 Tomcat 像这样一起工作。

我通过谷歌搜索找到了各种资源和讨论(例如,这个),但它们往往有点粗略和不完整,或者它们似乎与我想要做的并不真正匹配。我链接到的那个似乎是为了将所有请求发送到 Tomcat,而不仅仅是某些请求并让 Apache 处理其他请求。

有人可以为server.xmland推荐一个示例配置httpd.conf,或者给我一些更详细的资源吗?

Jer*_*use 5

server.xml除了将 Tomcat 恢复到默认端口以便 Apache 可以处理端口 80 之外,您不需要对 进行任何更改。大部分工作将通过 Apache 配置文件完成。我通常将这些放在外面,httpd.conf而是将它们粘贴到<ServerRoot>/conf.d/子目录下的较小配置片段中。

鉴于您的示例ourserver.ourcompany.com/app1&ourserver.ourcompany.com/app2我会假设配置如下:

<VirtualHost *:80>
    ServerName ourserver.ourcompany.com
    ErrorLog ...
    CustomLog ...

    [other VHost configurations]

    ProxyPass /app1 ajp://tomcat_hostname:8009/app1
    ProxyPassReverse /app1 ajp://tomcat_hostname:8009/app1

    ProxyPass /app2 ajp://tomcat_hostname:8009/app2
    ProxyPassReverse /app2 ajp://tomcat_hostname:8009/app2
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

如果您有多个 Tomcat 服务器集群,那么您可能需要查看设置 mod_balancer 并将其移动ajp://mod_balancer BalancerMember并替换为balancer://引用平衡器配置的URL。