2009-08-31 29 views
4

我都Apache 2的和在同一臺機器上的JBoss 4.2.3,並希望他們都使用80端口有幾種方法我看到人們這樣做的mod_jk,mod_proxy的,但我不確定哪一個是最好的。的Apache和JBoss的使用端口80的同時

我不需要任何負載平衡,但我確實需要HTTPS。

+0

爲什麼你需要JBoss和Apache來監聽同一個端口?你想達到什麼目的? – skaffman 2009-09-01 04:00:52

+0

其中一個原因是您只有一個IP地址可用,並且您希望您的Web應用程序在端口443上回答(需要JBoss回答端口443)。同一臺機器也託管你的Subversion版本庫,並通過apache在端口443上提供。通過使用下面描述的方法,apache服務器可以迴應和提供端口443上的svn請求,並通過AJP將Web應用程序的請求轉發給JBoss。 – 2009-09-01 17:36:14

回答

7

你不能有兩個應用程序聽在同一時間同一個TCP端口(80)。您可以使用mod_jk將端口80上的http請求從Apache服務器路由到JBoss服務器。這是我最熟悉和喜歡的方法。 mod_proxy也應該可以工作,但是我發現這個方法有點複雜。

在Apache配置HTTPS可能是最好的處理作爲一個單獨的話題。有與購買SSL證書,創建自簽署證書等問題

有兩個步驟來完成配置mod_jk的從Apache服務器將請求路由到JBoss服務器:

配置Apache Web服務器將一些請求轉發給JBoss服務器。

Apache的配置將根據您使用的Apache的分佈(windows,RHEL,debian,從源代碼構建等)而有所不同,但對於任何Apache安裝,這些概念應該是相似的。

您需要從Tomcat網站下載的mod_jk您的平臺:
http://tomcat.apache.org/download-connectors.cgi
操作系統供應商可以爲你提供二進制,所以檢查那裏第一次。如果你願意,你也可以自己編譯mod_jk。

複製mod_jk的二進制(mod_jk.so用於Linux/UNIX系統,不知道有關Windows)到您的Apache服務器模塊目錄(這取決於你使用的是Apache發行)。

相當於指令添加到您的Apache配置:

LoadModule jk\_module /usr/lib/apache2/modules/mod\_jk.so 

你應該兩個配置文件添加到Apache配置目錄:mod_jk.conf和workers.properties。你應該包括從主Apache配置文件mod_jk.conf:

Include /etc/apache2/mod\_jk.conf 

的workers.properties文件通過與JkWorkersFile指令mod_jk.conf包括在內。
http://tomcat.apache.org/connectors-doc/reference/apache.html

的重要指示是:
JkWorkersFile(指定了workers.properties文件生命)
JkMount(安裝

爲mod_jk.conf更詳細的設置可以在tomcat的文檔頁面中找到點URI的映射到Tomcat工人)

一個例子:

JkWorkersFile /etc/apache2/workers.properties<br> 
JkMount /examples/* myworker<br> 
JkMount /examples myworker 

這些指令映射/示例和/實施例/ URI到myworker Tomcat的工人。

從概念上講,您可以將工作者視爲表示tomcat或JBoss實例,並將掛載視爲將URI映射到工作人員的一種方式。這種表示事物的方式允許一臺Apache服務器成爲多個tomcat或JBoss服務器的前端。如果您只有一個可以使用的IP地址,但希望在一臺Apache服務器後面運行多個應用程序服務器,則此功能非常有用。

workers.properties文件描述了Apache服務器將連接到的tomcat或JBoss服務器。在這個文件中重要的項是:

worker.list=myworker<br> 
worker.tomcat.type=ajp13<br> 
worker.tomcat.host=localhost<br> 
worker.tomcat.port=8009 

有跡象表明,在對workers.properties文件tomcat的文檔頁面中找到其他工人的屬性:
http://tomcat.apache.org/connectors-doc/reference/workers.html

配置JBoss服務器接受連接來自Apache服務器

JBoss服務器被配置爲接受端口8009(缺省ajp端口)開箱即用的mod_jk連接,但很好知道在哪裏配置這個i如果您希望在將來更改其中的任何一種情況。

該配置位於位於$ {JBOSS_SERVER_CONFIGURATION} /deploy/jbossweb.sar/server.xml中的JBoss服務器的基於tomcat的部分。這是JBoss AS 5.1.0.GA,以前的版本都在類似的位置。該mod_jk連接在用於AJP 1.3協議的連接器部,被配置和看起來像:

<Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}" redirectPort="8443" /> 

最常見的原因來修改該部分是,如果你有多個Tomcat或連接經由AJP協議的apache的JBoss服務器,您可以調整AJP連接器將偵聽的端口號,以免發生衝突。