日期:2014-05-16  浏览次数:20724 次

使用Apache 反向代理功能连接 Tomcat
http://topic.csdn.net/t/20060912/11/5015746.html


Apache   HTTP   server   和   Tomcat   server   整合,一般是希望对于用户只公布   Apache   HTTP   server   的网址,而   Tomcat   的网址则不公布,扮演一个幕后英雄的角色。访问   Tomcat   的   HTTP   请求,通过   Apache   转发给   Tomcat,Tomcat   处理完后,将   HTTP   回应返回给   Apache,然后   Apache     HTTP   回应发回给用户端浏览器。

Apache   HTTP   server   和   Tomcat   server   直接的   HTTP   数据传输,有很多种方法。

方法一,使用   mod_jk。很多网站上介绍到   Apache   HTTP   server   和   Tomcat   server   整合的时候,都是在介绍     mod_jk.so   的使用,这是一种比较老的方法,并且需要额外下载   mod_jk。Apache   和   Tomcat   的默认配置文件都需要改动。

方法二,   URL   rewrite,也就是对于指定格式的   URL,转发给某个   Tomcat   的网址。这里所说的指定格式,是指   Apache   所使用的正则表达式,通俗地将,是一种类似   *   的一种比较高级通配符。这种方法不需要下在额外的文件,只需要配置   Apache。

方法三,mod_proxy_ajp,仅在   Apache   2.1   及以后的版本中可用,Apache   自带的一个新功能模块。这时   Apache   使用   Apache   JServ   Protocol   与   Tomcat   通讯。不需要下在额外的文件,需要改动Apache   和   Tomcat   的默认配置文件都需要改动。

方法四,mod_proxy。其实   mod_proxy   既可以做类似于   Wingate   一样的公司局域网共享上网代理,也可以做反向代理(Reverse   proxy)。这里使用的是反向代理功能,用户端浏览器不需要把代理服务器改成这里的   Apache   地址。mod_proxy   是   Apache   自带功能,并且配置比较简单。

这篇文章介绍   Apache   反向代理转发   HTTP   请求到   Tomcat   的配置。比较简单实用。

下载   Apache   web   server     2.2,安装完成后,修改安装目录下的   conf/httpd.conf   文件,将以下两行前的注释字符   #   去掉。

#LoadModule   proxy_module   modules/mod_proxy.so
#LoadModule   proxy_http_module   modules/mod_proxy_http.so

在这个配置文件最后,加上

ProxyPass                                     /app1   http://<tomcat_server_address>:port/url1

ProxyPassReverse     /app1   http://<tomcat_server_address>:port/url1

保存配置文件后重新启动   Apache   就可以了。当用户访问

http://<apache_server_address>/app1   的时候,Apache   后台自动将请求转发给   Tomcat   ,用户只认为   Apache   server   就是他所要的应用服务器。

细心的作者可以看到,Tomcat   那边没有做任何改动,是不是说明,如果   Tomcat   换成   JBoss,或者   IBM   Websphere,或者   BEA   Weblogic   ,也可以用   Apache   来转发呢?答案是,确实如此!!

这里需要解释的是,   Apache   反向代理只做   HTTP   透明转发,因此,Tomcat   那边,如果使用   servelet   API   获取   request   url,   server   info,等等,都是   Tomcat   的。在Tomcat   上的   JSP   或者   HTML   文件里面,都应该是相对路径,不应该使用绝对路径,更不能使用带   Tomcat   地址的   URL。这应该不是太高的要求,对不?

目前最新版的   Apache   自带的&