apache - 一台服务器上的多个tomcat版本

标签 apache tomcat mod-proxy mod-jk

我维护一个包含 3 个 jsf2-web 应用程序的网络服务器,当前部署在 tomcat7 上。我们的架构是使用 mod-jk 从 apache 通过端口 80 设置到三个实例,每个 web 应用程序一个。除了其他不同的原因,我需要一个 webapp tomcat8 和其他 tomcat7。我无法弄清楚如何实现这一点,因为我只能在 apache 配置中定义一个工作文件。这是服务器的架构:

Internet -> Apache 2 (open on Port 80 only)
Tomcat 7 instance 1 on Port 8180
Tomcat 7 instance 2 on Port 8280
Tomcat 7 instance 3 on Port 8380

Queries from Web redirected to tomcat instances:
server/Webapp1 -> instance 1/Webapp1
server/Webapp2 -> instance 2/Webapp2
server/Webapp3 -> instance 3/Webapp3

现在我想要的是在 Tomcat 8 而不是 7 上运行的实例 3,但由于端口限制,它必须由 apache 提供。新架构应如下所示:

Internet -> Apache 2 (open on Port 80 only)
Tomcat 7 instance 1 on Port 8180
Tomcat 7 instance 2 on Port 8280
Tomcat 8 instance 3 on Port 8380

在各种配置中尝试使用 proxypass,我无法使用它,因为它会重定向到互联网上不可用的端口。

有没有办法只在内部重定向,因为 Tomcat 8 是一个完整的其他进程?

最佳答案

我发现 mod_jk 也适用于不同的 tomcat 安装,所以我安装了 3 个 tomcat 包并配置 mod_jk 以使用每个 tomcat 实例。 mod_jk 的配置(参见 apache 模块文件夹)如下所示:

<IfModule jk_module>
  JkWorkersFile /opt/workers.properties
  JkLogFile /var/log/apache2/mod_jk.log
  JkLogLevel warn
  JkShmFile /var/log/apache2/jk-runtime-status
  JkWatchdogInterval 60
  JkMountFile /opt/uriworkermap.properties
</IfModule>

workers 文件如下所示:

worker.list=app1, app2, app3
worker.app1.port=8109
worker.app1.host=localhost
worker.app1.type=ajp13
worker.app2.port=8209
worker.app2.host=localhost
worker.app2.type=ajp13
worker.app3.port=8309
worker.app3.host=localhost
worker.app3.type=ajp13

关于apache - 一台服务器上的多个tomcat版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24784017/

相关文章:

apache - 如何在 HTTP 应用程序上启用 Apache SSL 反向代理

Apache - 资源随机挂起(导致页面加载缓慢)

更新后 Apache 错误 : client sent HTTP/1. 1 个请求没有主机名

java - 在 Tomcat 上配置 SQL Server 连接池

Hibernate c3p0和DBCP连接池机制

maven - 如何配置 maven settings.xml 以访问 apache 代理背后的 nexus

apache - mod_proxy/proxypass 错误

apache - 如何在 CentOS7 的 Virtualmin 上启用/安装 HTTP/2

Apache Tomcat 启动错误 : SEVERE: Error deploying web application directory

apache - Golang 无法识别 Close-Notifier