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">
OrderDeny,Allow
Allowfromall
</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挂掉。