如何設置使用 mod_proxy_ajp 與 Apache 和 Tomcat?
我想在 RHEL 5 伺服器上執行 Apache 和 Tomcat,Apache 處理 Ruby on Rails 應用程序(通過 mod_rails/Passenger)和 Tomcat 處理 Java 應用程序。
在 Apache 下,每個 Rails 應用程序都有一個 URL 和虛擬主機。URL 已經在我們的 DNS 伺服器中配置為指向機器。
在 Tomcat 下,每個 Java 應用程序都有一個這樣的 URL:
ourserver.ourcompany.com/app1
、ourserver.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_balancerBalancerMember
並替換為balancer://
引用平衡器配置的 URL。