您的位置主页 > 服务器专区 > linux > 配置ProxyPass整合apache与tomcat

配置ProxyPass整合apache与tomcat

2009-08-19    文章来源:互联网    浏览次数:1819

前言:配置动态虚拟主机

  一般情况下,我们会在Web服务器上寄放多个Web站点,并且每个站点都有它自己的虚拟服务器。对于Apache来说,它同时支持基于名称的虚拟服务器和基于IP的服务器。

  对于基于IP的虚拟服务器,每个站点都具有一个单独的IP地址,这样的缺点是使用太多的IP地址,但如今IPv4的地址已有枯竭的迹象,所以不提倡使用,通常在要求使用SSL 时才使用。

  对于基于名称的虚拟服务器,多个Web站点共享一个IP地址。在这种情况下,通常根据HTTP请求头部来决定将其发给哪一个站点。为此,我们需要为每个虚拟服务器分别建立一个配置,给作为Web站点的根的目录以及主机命名。

**********************************************************************************************

*********************************************************************************************

    备注:关于如何编译安装apache与tomcat,请参看我的另两篇博文。只所以要单独开这一篇,是因为这是我学习ubuntu的终极目的所在。就是要让它来做服务器。所以整合apache与tomcat只是迈出了第一步。接下来,关于如可优化服务器,我想把一想理论课程好好的补补之后才开博。

一、配置ProxyPass以及ProxyPassReverse规则,实现apache和tomcat的整合。

在httpd.conf最后加上:

 
  1. ProxyPass /images/ !
  2. ProxyPass /js/ !
  3. ProxyPass /css/ !
  4. ProxyPass / ajp://127.0.0.1:8009/
  5. ProxyPassReverse / ajp://127.0.0.1:8009/


前三行是表示禁止转发该路径的请求,一般来说是静态的。

后两行自然是转发所有的访问至8009也就是tomcat的ajp端口。

这样则完成了同tomcat的整合。

    值得注意的是,同tomcat的整合还有一种tomcat-connector的方式,也就是mod_jk,那种的配置更灵活,适用性更高。但是由于其复杂性(目前已经没有更新版本),同时apache2.2版本开始,自身整合了mod_proxy和 mod_proxy_ajp模块,实现了更简单的同tomcat的整合,所以建议采用这种方式了。


二、整合之后,测试
    写了一个简单的phpinfo()测试,却提示下载.......这是怎么回事呢?记得上面的ProxyPass配置不?就是这个地方了,它将所有的/的访问转到了tomcat,自然是没办法处理php的了。
    在网上也搜了一下相关的处理办法,我的想法是能够做到*.php的都不转发,然而ProxyPass好像只支持url的方式,不支持正则匹配,一般的解决办法是比如建一个php的目录,那么在ProxyPass /php !来实现对php的处理。很明显不是一个好的解决办法,如果我的php和jsp混和在一起的,从url上就不能控制了。既便分开,始终要加上一个不必要的路径以区分对php的处理,实在不爽。

    经过一番google,找到一种解决办法,那就是配置虚拟主机。

在conf最下面加:

 
  1. NameVirtualHost *:80
  2. <VirtualHost *:80>
  3.  ServerName php.test.com
  4.  DocumentRoot /var/www
  5.  DirectoryIndex index.html index.php
  6.  <Directory "/var/www">
  7.      Options Indexes FollowSymLinks
  8.      AllowOverride None
  9.      Order allow,deny
  10.      Allow from all
  11.  </Directory>
  12. </VirtualHost>
  13.  
  14. <VirtualHost *:80>
  15.         ServerName java.test.com
  16.         DocumentRoot /opt/Tomcat 5.5/webapps
  17.         DirectoryIndex index.html index.jsp
  18.         <Directory "/opt/Tomcat 5.5/webapps">
  19.             Options Indexes FollowSymLinks
  20.             AllowOverride None
  21.             Order allow,deny
  22.             Allow from all
  23.         </Directory>
  24.         ProxyPass /images/ !
  25.         ProxyPass /js/ !
  26.         ProxyPass /css/ !
  27.         ProxyPass / ajp://127.0.0.1:8009/
  28.         ProxyPassReverse / ajp://127.0.0.1:8009/
  29. </VirtualHost>

    这样就实现了当访问a.test.com时,apache解析php那个目录,而访问www.test.com时,解释www那个目录,并转发至tomcat。运行测试成功!

******************************************************************************************

*************************************************************************************

    以过一个多月的紧张调试,及参照一些高手的博客,GOOGLE帮忙之下,终于完成了ubuntu的配置工作。接下来的两个多月的时间,我的学习中心将放在《电子商务设计师》教程的学习之上,准备应付11月份的考试。所以会有一段时间不能及时更新博客。

    同时,我也会利用一些业余的时间,学习一些linux的理论知识。让服务器跑得更快,更安全。

转自:http://blog.sina.com.cn/s/blog_53da61b60100aku8.html

  • 上一篇:linux apache下虚拟主机配置方法
  • 下一篇:没有了
  • 文章评论(查看全部)

    验证码: 中评 好评 差评