如果并发连接较多,同时访问人数很多的情况下,有时候Tomcat可能会处于“僵死”状态,对之后的访问可能带来影响,并可能失去响应,apache+Tomcat的整合不失为一个好的解决方案。Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。Apache的加入可以将处理HTML页面及一些图片等静态的功能由它本身完成,而减轻Tomcat的工作压力,将html与jsp的功能部分进行明确分工,让tomcat只处理jsp部分,其它的由apache这个web server处理。Apache与Tomcat各司其职,那么服务器的整体效率就能够得到提升。同时也可以多部署了几个tomcat服务器,用jk/jk2负责负载平衡,然后通过apache管理。 除了以上好处外,apache还可以实现请求重定向,在同一台服务器上多个应用共用同个端口。在实际部署环境中是非常实用的。


1 序
本方案基于Apache2.2.4+Tomcat6配置。
2 Tomcat6配置
apache-tomcat-6.0.16\conf
server.xml
步骤一:
找到下面配置项:
  <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />
修改后:
<Connector port="8086" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>

步骤二:
找到下面配置项:
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
修改后:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>

模拟域名
编辑C:\WINDOWS\system32\drivers\etc\hosts文件,在最后加上两个映射
  127.0.0.1  a.wap.cn 
  127.0.0.1  b.wap.cn 

3 Apache配置
Apache2.2\conf\httpd.conf

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
把Include前面的#去掉即可

apache2.2以上版本,无需使用jk_mod来集成tomcat,直接使用ajp,很方便。
修改apache配置文件httpd.conf
启用mod_proxy_ajp
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
把这两行前面的#去掉即可

Apache2.2\conf\extra\httpd-vhosts.conf

方式一、基于AJP端口的配置
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.test.com  
    ServerName a.wap.cn
    Options All
    ProxyPass / ajp://127.0.0.1:8009/
    ProxyPassReverse / ajp://127.0.0.1:8009/
    ErrorLog "logs/awap-error.log"
    CustomLog "logs/awap-access.log" common
</VirtualHost>
此配置中的8009对应Tomcat配置中AJP 1.3 Connector,用于识别访问URL为http://a.wap.cn,则转到

Tomcat下的ROOT系统

方式二、基于HTTP端口的配置
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.test.com  
    ServerName a.wap.cn
    Options All
    ProxyPass / http://127.0.0.1:8086/
    ProxyPassReverse / http://127.0.0.1:8086/
    ErrorLog "logs/awap-error.log"
    CustomLog "logs/awap-access.log" common
</VirtualHost>

NameVirtualHost *:80
<VirtualHost *:80>   
     ServerAdmin ipi.zcf@gmail.com   
    ServerName docs.ipi.com   
    Options All
    ProxyPass /portal ajp://docs.ipi.com:8009/portal/
    ProxyPassReverse /portal ajp://docs.ipi.com:8009/portal/
</VirtualHost>