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

整合Apache和Tomcat

这里所说的Apache是指Apache HTTP Server(后面对Apache HTTP Server简称为Apache),它是一个非常好用的web服务器,但是它只能执行静态的HTML,对于动态页面是不支持的;Tomcat本身就是一个web服务器,它可以执行jsp动态页面,也能执行静态页面,但是它解析执行静态页面远远不如Apache。那么我们可以使用Apache和Tomcat的优点,更适合我们的实际应用吗?当然可以,下面我就来介绍一下两者的整合过程。
1、使用的版本
? Apache2.2.4
? Tomcat5.0.28
? JDK 1.4.2
? mod_jk 1.21(mod_jk-apache-2.2.4.so) 注意:必须匹配apache版本
?
2、开始整合
? 整合前,请先确认以上软件都已经安装并能正常运行。在这里我就不详谈了,如果不会,请上网搜索一下。
?
? 方案一,由于apache2.2本身已经支持tomcat了,所以这里用proxy来整合tomcat
? 打开httpd.conf文件,把
? LoadModule proxy_module modules/mod_proxy.so
? LoadModule LoadModule proxy_http_module modules/mod_proxy_http.so
? 前面的#去掉, 并在文件最后添加
? ProxyPass /images/ !
? ProxyPass / http://127.0.0.1:8009/
? ProxyPassReverse / http://127.0.0.1:8009/
? 先来解释一下 ProxyPass和?ProxyPassReverse指令
? 语法:ProxyPass [路径] !|url
?说明:将一个远端服务器映射到本地服务器的URL空间中
? 该指令对于您不想对某个子目录进行反向代理时很有用。比如说:

? ProxyPass /mirror/foo/i !
? ProxyPass /mirror/foo http://foo.com

? 将会代理所有对 foo.com 的/mirror/foo请求,但是对/mirror/foo/i请求除外。

?

? 语法:ProxyPassReverse?[路径] !|url
??说明:调整由反向代理服务器发送的HTTP回应头中的URL
?

??? 此指令使 Apache 调整HTTP重定向回应中LocationContent-LocationURI头里的URL。这就是Apache在作为反向代理使用时,避免以因为位于反向代理之后的后端服务器的HTTP重定向造成的绕过反向代理的实质。

??? 路径是本地虚拟路径的名称。
??? url远端服务器的部分URL。与ProxyPass指令中的使用方法相同。

示例:
假定本地服务器拥有地址http://wibble.org/;那么

ProxyPass /mirror/foo/ http://foo.com/
ProxyPassReverse /mirror/foo/ http://foo.com/

不仅会把所有对<http://wibble.org/mirror/foo/bar>的请求直接转为对 <http://foo.com/bar> 的代理请求,(由ProxyPass提供的功能)。它还会改变服务器foo.com的发送:当http://foo.com/bar被它重定向到http://foo.com/quux时,Apache会在前转HTTP重定向回应到客户端之前调整它为http://wibble.org/mirror/foo/quux

以上指令说明,请参照http://kajaa.bbs.us/ApacheManual/zh-cn/mod/mod_proxy.html#proxypass<