JBoss 系列九十一:JBoss 构建的高可用集群环境使用 Apache 的 mod_rewrite 转发根路径到特定应用

如 使用Apache httpd(mod_cluster)和JBoss构架高可用集群环境,使用Apache httpd(mod_jk)和JBoss构架高可用集群环境 以及 使用Apache httpd(mod_proxy)和JBoss构架高可用集群环境 中所描述的,我们一般通过位于 JBoss 集群之前的 Apache 服务器作为负载均衡器,构建集群应用,这种情况,一个HTTP的请求大致如下图所示:

JBoss 系列九十一:JBoss 构建的高可用集群环境使用 Apache 的 mod_rewrite 转发根路径到特定应用_第1张图片

  • myapp 部署于 JBoss, JBoss 监听于 8080 端口
  • Apache 监听于 80 端口,可转发请求到 后台 JBoss
  • 域名解析器根据相关的域名如 example.com 可解析到Apache服务器,例如,用户通过 http://example.com/myapp 可以访问部署于 JBoss的应用myapp
如图中,终端应用在浏览器中输入URL http://example.com/myapp,域名解析服务器通过 example.com 解析到 Apache 服务器(IP)对应的物理机器,Apache 根据URL中后缀 myapp 来访问应用。但是在 实际应用中的URL后缀都没有应用名,即通过 http://example.com 来访问 myapp,如下图所示:

JBoss 系列九十一:JBoss 构建的高可用集群环境使用 Apache 的 mod_rewrite 转发根路径到特定应用_第2张图片

本文演示如何在 Apache 服务器复制跟路径到特定应用 myapp。如下演示基于 Linux 服务器(Linux 2.6.43.8-1.fc15.i686.PAE),Apache 服务器 2.22,JBoss 服务器 7.1,具体分以下几步:

1. 部署 myapp.war 到 JBoss(使用4种方式部署应用到JBoss7/WildFly), myapp.war 中只包括 index.html,内容包含一行字符串如下:

This is index.html under myapp

启动 JBoss 后可以通过 http://localhost:8080/myapp 访问,页面出现字符串“This is index.html under myapp”。

2. 配置 Linux 服务器,编辑 /etc/hosts 如下:

127.0.0.1   localhost
127.0.0.1   example.com

这样在本机可以通过 example.com 访问到本机运行的 Apache 服务器。

3. 配置 Apache 服务器,使用Apache httpd(mod_cluster)和JBoss构架高可用集群环境,使用Apache httpd(mod_jk)和JBoss构架高可用集群环境 以及 使用Apache httpd(mod_proxy)和JBoss构架高可用集群环境 中任何一种配置 Apache 服务器与 JBoss之间的转发,配置完成通过 http://localhost/myapp 可以访问部署与 JBoss 的 myapp,即字符串“This is index.html under myapp”输出到界面

4. 配置 Apache 服务器,添加 mod_rewrite 转发配置,编辑 httpd.conf,添加如下配置:

RewriteEngine On
RewriteCond     %{REQUEST_URI}  !^/myapp/
RewriteRule ^/(.*) /myapp/$1 [PT]

配置完成,重启 Apache 服务器,通过 http://example.com/访问,页面输出如下:

JBoss 系列九十一:JBoss 构建的高可用集群环境使用 Apache 的 mod_rewrite 转发根路径到特定应用_第3张图片

你可能感兴趣的:(apache,linux,jboss,mod_rewrite)