4

我在同一台机器上同时安装了 Apache 2 和 JBoss 4.2.3,并且希望它们都使用端口 80。我看到人们使用 mod_jk、mod_proxy 的几种方法,但我不确定哪一种是最好的。

我不需要任何负载平衡,但我确实需要 HTTPS。

4

1 回答 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

worker.properties 文件包含在 mod_jk.conf 和 JkWorkersFile 指令中。

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

重要的指令是:
JkWorkersFile(指定workers.properties 文件所在的位置)
JkMount(将URI 映射到tomcat worker 的挂载点)

一个例子:

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

这些指令将 /examples 和 /examples/ URI 映射到 myworker tomcat worker。

从概念上讲,您可以将 worker 视为表示 tomcat 或 JBoss 实例,而将 mount 视为将 URI 映射到 worker 的一种方式。这种表示事物的方式允许一个 Apache 服务器成为多个 tomcat 或 JBoss 服务器的前端。如果您只有一个 IP 地址可以使用,但希望在一台 Apache 服务器后面运行多个应用程序服务器,这会很方便。

worker.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 文档页面中可以找到其他worker 属性:http:
//tomcat.apache.org/connectors-doc/reference/workers.html

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

JBoss 服务器被配置为接受端口 8009(默认 ajp 端口)上的 mod_jk 连接,但最好知道在哪里配置它,以防您将来想要更改其中的任何内容。

配置在位于 ${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" />

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

于 2009-08-31T14:20:10.000 回答