2009-08-31 87 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连接器将侦听的端口号,以免发生冲突。