Apache和JBoss同时使用端口80

4

我在同一台机器上安装了Apache 2和JBoss 4.2.3,并希望它们都使用80端口。有几种方法可以实现,如mod_jk、mod_proxy等,但我不确定哪一种是最好的。

我不需要负载均衡,但我需要HTTPS。


为什么需要让JBoss和Apache在同一端口上监听?你想要实现什么目标? - skaffman
其中一个原因可能是您只有一个可用的IP地址,而且您希望您的Web应用程序在端口443上进行响应(这就是JBoss需要响应端口443的原因)。同一台机器还托管了您的子版本仓库,并通过Apache也在端口443上提供。通过使用下面描述的方法,Apache服务器可以在端口443上回应和服务svn请求,并通过AJP将Web应用程序的请求转发给JBoss。 - Lloyd Meinholz
1个回答

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二进制文件(Linux/UNIX系统使用mod_jk.so,不确定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

工作人员属性文件由JkWorkersFile指令与mod_jk.conf一起使用。

有关mod_jk.conf的更详细设置可以在tomcat文档页面中找到:
http://tomcat.apache.org/connectors-doc/reference/apache.html

重要指令包括:
JkWorkersFile(指定workers.properties文件所在位置)
JkMount(将URI映射到tomcat工作程序的挂载点)

一个例子:

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

这些指令将/examples和/examples/ URI映射到myworker的tomcat worker。
在概念上,您可以将一个worker视为代表tomcat或JBoss实例,而挂载则是将URI映射到worker的一种方式。这种表示方式允许一个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

在tomcat文档页面的workers.properties文件中可以找到其他工作程序属性:
http://tomcat.apache.org/connectors-doc/reference/workers.html

配置JBoss服务器以接受来自Apache服务器的连接

JBoss服务器默认情况下配置为在端口8009(默认ajp端口)上接受mod_jk连接,但是知道在哪里进行配置很重要,以便以后更改任何内容。

配置位于${JBOSS_SERVER_CONFIGURATION}/deploy/jbossweb.sar/server.xml中的基于tomcat的JBoss服务器部分。这适用于JBoss AS 5.1.0.GA,之前的版本位于类似位置。mod_jk连接器在AJP 1.3协议的Connector部分中进行配置,如下所示:

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

最常修改此部分的原因是,如果您有多个通过AJP协议连接到Apache的Tomcat或JBoss服务器,则可以调整AJP连接器侦听的端口号,以避免冲突。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接