apache2.2+tomcat6 整合 ajp_proxy 代理

配置成功,记录下来。

apache2.2中加入了ajp_proxy反向代理,配置比起mod_jk来说,要简便的多。 因为ajp_proxy在apache2.2中才有,所以网上资料并不多。

1.安装好apache和tomcat后,找开apache目录下conf下的httpd.conf文件,将以下三项前面的#号去掉

 

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

 

 

 

 

 

 

2.再在文件下方写入

 

 

ProxyPass / ajp://127.0.0.1:8009/

ProxyPassReverse / ajp://127.0.0.1:8009/

 

 

 

 

 

 代表将所有请求给tomcat处理。 ajp://127.0.0.1:8009  表示你本机上的tomcat的ajp商品号。

光凭以上的配置已经可以访问到程序了。

当然还可以加入指定文件目录下的请求给apache处理。apache对静态资源处理的效率比tomcat高,你懂的。

 如果忽略第三步,加入下面一段后,apache就访问了不了静态文件了,等找到原因后再贴上来。

  原因找到:要指定DocumentRoot 为程序目录(为防止冲突,建议配虚拟机)

 

 

ProxyPass /resources !

ProxyPass /images !

ProxyPass /css !

proxyPass /js !

 

 

 

 

 

   

 3.配置虚拟机。 再住文件下加入以下代码:

   有很多文档说在 conf/extra/httpd-vhosts.conf这个文件里写,其实在httpd.conf里写也行,我比较懒,就写这了

 

 

收工。

输入127.0.0.1打开程序。

<VirtualHost *:80> ServerAdmin [email protected] ServerName apache <Directory "G:/xxxx/ROOT/"> ##增加apache对程序目录下文件的访问权限,可写在外面。 Order Deny,Allow Allow from all </Directory> DocumentRoot "G:/xxx/ROOT/" ##程序的目录 ServerAlias 127.0.0.1 ##可以直接以此ip访问 ProxyPass /jsp ajp://127.0.0.1:8009/ ProxyPassReverse /jsp ajp://127.0.0.1:8009/ ErrorLog "logs/lbtest-error.log" </VirtualHost>

 

 

 

 

 

 

 遇到如下错误:

 

1. client denied by server configuration:“D:XXX”    客户端拒绝请求,没有权限

 检查hpptd.conf中是否有以下配置:

  <Directory "D:/xxx">
       Order Deny,Allow
       Allow from all
    </Directory>

 

2. Directory index forbidden by Options directive:"D:xxx"  和权限也有关系,也可能没有设置index文件

 检查hpptd.conf中是否有以下配置:

DirectoryIndex index.html index.jsp

 

3.使用BackUpManager与DeltaManager方式时,在tomcat集群配置时用的不同。

 具体请看这个。http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html,仔细看是有些区别的。当从DeltaManager转向BackUpManager时,

<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>

 

这一不删除会报,但对程序的影响不是很大。

<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>

 

如果不加上这一行,apache分均匀的将请求分发给tomcat,轮流分发。如果加上,就会将请求全部发给一个tomcat,直到这个tomcat挂掉。

你可能感兴趣的:(tomcat6)