Chinaunix首页 | 论坛 | 博客
  • 博客访问: 279848
  • 博文数量: 88
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 840
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-20 21:13
文章分类

全部博文(88)

文章存档

2022年(1)

2017年(1)

2016年(2)

2015年(1)

2014年(83)

分类: Java

2014-05-20 13:53:33

原文:http://blog.csdn.net/liuyi1985/article/details/4045031

这是我在网上转载的方法,本人亲测绝对正确。注意,文章中的各文件使用时要严格区分32位和64位,不可混为一谈。

假设主机域名为:(也可以是localhost) 

需求一:假如${TOMCAT_HOME}/webapps下有一个名为jsp的web目录(或者jsp.war),我们想以http:///jsp访问jsp项目 

步骤1:
下载isapi_redirect-版本号.dll文件作为IIS与TOMCAT的接口,我下载的是isapi_redirect-1.2.27.dll
下载地址:
然后把该文件放入${TOMCAT_HOME}/conf下 

步骤2:
建立如下注册表文件并执行
  点击(此处)折叠或打开

    1. Windows Registry Editor Version 5.00
    2. [HKEY_LOCAL_MACHINE/SOFTWARE/Apache Software Foundation/Jakarta Isapi Redirector/1.0]
    3. "log_file"="D://Software//apache-tomcat-6.0.18//logs"
    4. "log_level"="debug"
    5. "worker_file"="D://Software//apache-tomcat-6.0.18//conf//workers.properties"
    6. "worker_mount_file"="D://Software//apache-tomcat-6.0.18//conf//uriworkermap.properties"
    7. "tomcat_start"="D://Software//apache-tomcat-6.0.18//bin//tomcat.bat start"
    8. "tomcat_stop"="D://Software//apache-tomcat-6.0.18//bin//tomcat.bat stop"
    9. "extension_uri"="/jakarta/isapi_redirect-1.2.27.dll"

注意修改与tomcat相关的路径(在我的系统中,tomcat安装目录为“D:/Software/apache-tomcat-6.0.18”) 


步骤3:
在tomcat/conf下建立两个文件 
文件1:workers.properties
点击(此处)折叠或打开

    1. # 工作站的名称任意,但须注意前后一致,多个工作站以“,”分割
    2. worker.list=ajp13w
    3.  
    4. # 工作站的类型:ajp13是IIS与Tomcat通讯协议的名称
    5. worker.ajp13w.type=ajp13
    6.  
    7. # 注意此处的host需要与主机或者设置域名的名称一致
    8. worker.ajp13w.host=www.host1.com
    9. # worker.ajp13w.host=localhost
    10.  
    11. # ajp13协议的通讯端口
    12. worker.ajp13w.port=8009
    13.  
    14. # 负载因子
    15. worker.worker1.lbfactor=

  1. 文件2:uriworkermap.properties
  2.  点击(此处)折叠或打开
    1. # 当前域名下上下文路径为jsp的请求,转发给ajp13w工作站处理
    2. /jsp/*=ajp13w
    3. /jsp=ajp13w
    4.  
    5. # 当前域名下的所有请求都转发给ajp13w工作站处理
    6. # /*=ajp13w
    7.  
    8. # 当前域名下,所有.jsp的请求都转发给ajp13w工作站处理
    9. # /*.jsp
    10.  
    11. # 当前域名下,除了.html的请求,其他都转发给ajp13w工作站处理
    12. # !/*.html
步骤4:
在IIS管理器中的“ISAPI和CGI限制”里面右键添加isapi_redirect-1.2.27.dll,并设定“允许执行扩展路径”,描述名可取jakarta 


步骤5:
在Default Web Site上右键添加虚拟目录,别名可取jakarta,路径指向${TOMCAT_HOME}/conf,即isapi_redirect-1.2.27.dll所在目录。
接着单击Default Web Site,选择ISAPI筛选器,并右键添加筛选器,名称可取jakarta,可执行文件选择isapi_redirect-1.2.27.dll。
然后点击虚拟目录,双击“处理程序映射”选择“编辑功能权限...”将所有权限选上 

步骤6
重启IIS服务器和Tomcat。
访问http:///jsp


需求二:假如有一个新域名(可以通过在C:/Windows/System32/drivers/hosts文件里添加127.0.0.1 模拟),我们想以http://访问需求一中所述的jsp项目 

步骤1:
配置${TOMCAT_HOME}/conf/server.xml,增加一个虚拟主机:

点击(此处)折叠或打开

  1. <Host name="" appBase="webapps/jsp"
  2.  unpackWARs="true" autoDeploy="true"
  3.  xmlValidation="false"
  4. xmlNamespaceAware="false">
  5. </Host>


关于server.xml格式各个标签的意义请查看Tomcat相关的文档。 

步骤2:
由于jsp已视为一个站点,所以根据Tomcat站点的目录规范,需要在jsp目录下新建ROOT目录,并且将原jsp文件夹下的所有文件剪切到ROOT目录下 

步骤3-6请参见需求一中的步骤1-4,其中文件uriworkermap.properties的内容相应应改为:/*=ajp13w 

步骤7:
网站节点上右键新建网站,取名任意,物理路径可以选择${TOMCAT_HOME}/webapps/jsp,方便设置由IIS来解析静态文件,如html和一些图像文件等,我根据习惯设置的是C:/inetpub/,其中,是我新建的目录。
然后主机名填写,并选择“立即启动网站” 

步骤8:
在网站列表的上右键添加虚拟目录,别名可填jakarta,路径指向${TOMCAT_HOME}/conf,即isapi_redirect-1.2.27.dll所在目录。
接着单击,选择ISAPI筛选器,并右键添加筛选器,名称可取jakarta,可执行文件选择isapi_redirect-1.2.27.dll。
然后点击虚拟目录,双击“处理程序映射”选择“编辑功能权限...”将所有权限选上 

步骤9:
重启IIS服务器和Tomcat。
访问http://

注解:此处的指向的是一个具体的ip地址。如果没有域名,可以在hosts文件中加一个127.0.0.1 来模拟。


原理浅析:
简单地说,就是IIS不能解析jsp文件,所有与jsp文件相关的请求,IIS都需要转发给Tomcat处理,所以,我们的配置过程都是围绕着如何实现正确转发进行的。

上述注册表文件和workers.properties文件,仅是指定了一些必要的路径、协议、端口号和工作站名称等一些较为固定的信息。相对于这两个文件来说,uriworkermap.properties和server.xml这两个文件与配置成功与否关系更为紧密。前者直接决定了需要转发给Tomcat处理的请求信息,后者则在Tomcat站点的配置上起了关键作用。

首先,当一个http请求(如[:80]/context)传递到80端口时,IIS服务器会过滤掉端口号,将请求地址改为host/context形式进行进一步分析
接着通过host名称找到相应的网站,并根据uriworkermap.properties文件,决定此条请求是否转发

如果不转发,则按照普通流程处理该请求;否则,转发给Tomcat处理,并等待其处理结果,再响应给客户端。
对于转发给Tomcat的请求,Tomcat在server.xml中寻找名为host的虚拟主机,并映射到appBase目录,然后根据context进行后续操作。具体过程请查看相关资料 

 

IIS与Tomcat服务器的一些对应关系:
IIS   Tomcat(server.xml)
根节点   Engine
网站   Host
网站名称  Host:
网站.主机名  Host.name
网站.物理路径  Host.appBase
虚拟目录  Context 


配置经验:
一般来说,在整合IIS和Tomcat之前,首先应该确定能够使用类似:8080/context网址访问Tomcat的站点,以便在配置

IIS过程出现问题时,分辨是IIS的问题还是Tomcat的问题
由于IIS和Tomcat是通过jk连接的,所以,在整合前,可以将两个服务器视为互相独立的,保证两个服务器均可以正常访问后,再考虑正确转发的问题

阅读(7128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~