Windows Server服务器下Apache+JBoss实现请求转发

主题

     本文主要讲述的是在Window Server服务器下采用Apache+JBoss服务器的模式实现请求的转发,Apache主要实现转发服务器的功能,真正的请求处理由JBoss服务器进行。在这种模式下项目使用Java编程。

集成原因分析

      采用着用模式主要的目的是将可用的服务器全部使用上,采用一个域名进行访问到所有的项目,当然也可以将所有的项目放到一个JBoss里面,然后通过域名访问,但是这样做的后果是JBoss占用服务器内存狂大,服务器运行一段时间后会自动关掉,明显的表现方式是不能继续提供访问服务,而且这样做还有一个很大的隐患是JBoss服务器的配置端口会暴漏在网络上,虽然可以实现加入访问密码等进行控制,但是会招来不必要的攻击。

      目前,在我所在的环境中,有5台服务器,每台服务器上面都挂着1-2个Java Web项目,其中有一台服务器拥有域名,因此将此服务器作为转发服务器。经过一段时间的运行,除个别问题需要注意外,服务器运行表现良好。此种模式下可以随时添加服务器集群功能。

安装Apache服务器软件

本系统采用的是httpd-2.2.21-win32-x86-openssl-0.9.8r版本,这个版本在官网上都有下载。一路的安装过程都采用默认,下面的部分需要注意。

image

     上面需要填写三个信息,第一个是域名,第二个是服务器名称,第三个是服务器管理员的电子邮箱地址,填写都有相应的示例,注意端口要选择80,因为域名访问的默认端口是80。

有的服务器是默认开启IIS服务的,如果出现冲突,你们请关闭IIS服务,或者将其监听端口改为非80即可。

配置Apache服务器

      Apache服务器的配置文件位于/conf文件夹下面,文件名称为httpd.conf。这个是Apache服务器的主要配置文件,关于Apache的配置文件说明,请查询网上的相关信息,在这里不做重复说明了。

在配置文件中添加下面两个包(如果能查找到这两个包,那么请去掉其前面的#(注释))。

#在这里加上转发的配置
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

然后在该文件中包含一个专门配置转发的文件

#加上配置相应的ip地址的配置
Include conf/server_list.conf

这个配置的意思是要包含一个配置文件server_list.conf,其和httpd.conf位于同一目录中。

在这个文件中添加一个转发的配置,例如下:

#信息管理系统
ProxyPass /babu http://172.16.13.36:8080/babu
ProxyPassReverse /babu http://172.16.13.36:8080/babu
#信息管理系统
ProxyPass /longsheng http://172.16.13.35:8080/longsheng
ProxyPassReverse /longsheng http://172.16.13.35:8080/longsheng

配置说明:

      ProxyPass和ProxyPassReverse是成对出现的,如果只有ProxyPass则在发出请求后网页会调转到服务器的真实地址中去,而服务器的真实地址又在内网中,因此造成无法访问。通过这种配置,外网访问项目的时候根本不知道其访问的不是真正的服务器,而是一台代理服务器,这种关系对应用户来说是透明的。
配置完毕后,重启Apache服务器,看下结果吧。

注意的问题

     在配置Apache服务器的过程中如果要检查某一项的配置是否正确,可以使用Apache自带的检查工具,Test Configuration工具,运行这个工具,如果没有问题会有一个DOS页面一闪而过,如果有错误则会提示具体的错误信息。

image

在编写Java Web项目的过程中遇到的一个应该注意的问题是,在使用MyEclipse编写网页时会自动生成如下的信息:

image

 

     即basePath的获取,因为jsp是在服务器端运行完成的,因此,此段代码执行后basePath被替换为服务器真正的地址,此网页在内网没有问题,因为内容可以直接访问真实的服务器,如果在外网访问,你们就会出现访问失败的情况,因为basePath运行后显示的是内网的地址,而不是代理服务器的地址或者域名。

解决办法:

     使用path代替basePath,因为path没有地址信息和协议信息,只是相对的地址,如果一定要在页面中显示地址信息,也是可以的,只不过要在后台获取地址的时候使用一些特殊的手段,因为服务器请求经过几次转发后,内次转发都会在地址头部写上一次地址,因为最后一次转发的地址就是真实的地址,这是对于使用地址访问的来说的。如果使用域名访问,你们建议使用Javascript手段获取访问协议个访问域名地址等信息来组成最终的basePath信息。

总结

      通过Apache和JBoss的组合,可以充分利用内网服务器的资源,降低单一服务器的访问压力,甚至可以使用普通的主机来组成转发群,在本文中只是简要的说明了Apache的转发配置和需要注意的一些问题,有关Apache的优化配置说明如果哪位同鞋遇到配置问题了,那么我就把我的配置贴出来跟你大家分享。

现在网上的配置大多数是针对Linux/unix操作系统的,希望我的这篇文章能够对那些在Windows下迷茫的同鞋能有所帮助。

by Rush

Date : 2012年2月14日 12:00:31

posted @ 2012-02-14 12:02  Rush_SONG  阅读(5148)  评论(0编辑  收藏  举报