Apache-2.2

如何設置使用 mod_proxy_ajp 與 Apache 和 Tomcat?

  • January 26, 2010

我想在 RHEL 5 伺服器上執行 Apache 和 Tomcat,Apache 處理 Ruby on Rails 應用程序(通過 mod_rails/Passenger)和 Tomcat 處理 Java 應用程序。

在 Apache 下,每個 Rails 應用程序都有一個 URL 和虛擬主機。URL 已經在我們的 DNS 伺服器中配置為指向機器。

在 Tomcat 下,每個 Java 應用程序都有一個這樣的 URL:ourserver.ourcompany.com/app1ourserver.ourcompany.com/app2等。

伺服器已經啟動並執行 Tomcat 6,在埠 80 上執行並為多個 Java 應用程序提供服務。我想添加 Apache 並重新配置。我熟悉如何配置一個單獨的 Apache 伺服器來使用Passenger 託管RoR 應用程序。我只是不知道如何讓 Apache 和 Tomcat 像這樣一起工作。

我通過Google搜尋找到了各種資源和討論(例如,這個),但它們往往有點粗略和不完整,或者它們似乎並不真正符合我想要做的事情。我連結到的似乎是如果您想將所有請求發送到 Tomcat,而不僅僅是某些請求並讓 Apache 處理其他請求。

server.xml有人可以為and建議一個範例配置httpd.conf,或者可能指向我一些更詳細的資源嗎?

您不需要對 Tomcat 進行任何更改,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>

如果您有多個 Tomcat 伺服器集群在後面,那麼您可能需要查看設置 mod_balancer 並將其移動ajp://mod_balancer BalancerMember並替換為balancer://引用平衡器配置的 URL。

引用自:https://serverfault.com/questions/106254