公司有服务器A和服务器B,服务器A上用Tomcat跑的JSP,服务器B上跑用IIS跑的ASP和.Net。A负载较大需要转移部份网站到B服务器。
IIS与Tomcat共存主要就是如何解决端口问题。WEB服务默认是访问的80端口,如果使用其它端口则需要在URL中指明端口号。很显然让浏览者访问网站时输入http://www.xxoo.com:8080/这样的带端口号的路径是件非常尴尬的事。所以得解决IIS与Tomcat共享80端口的问题。
一番GOOGLE之后发现,普遍的解决方案是使用一个web服务器作代理。于是,解决思路就是:将80端口分配给IIS,Tomcat使用其它端口(比如我这里的8080),IIS接到JSP的请求或者接到某个站点的全部请求之后将这些请求交给tomcat处理。折腾了一半将自己的操作过程记录下来供大家参考:
我的环境:Windows 2003、IIS 6.0、 Tomcat 5.5、Jakarta Isapi Redirector1.2.14(这东东建议使用安装文件安装,否则需要手动配置注册表和创建配置文件,本文{zh1}会提供下载链接)
{dy}步,运行Tomcat安装文件,我是在本地测试环境安装,所以jdk路径直接用的默认的C:\Program Files\Java\jdk1.6.0_03,一路next,顺利的话访问http://localhost:8080/你应该可以看到那只猫了。
第二步,安装Jakarta Isapi Redirector,我也是安装到默认路径C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector
第三步,在IIS6中找到要需要运行JSP的网站,先将该站点的执行权限设置为“脚本和可执行文件”,然后右键点击该站点-属性-ISAPI筛选器,添加筛选器。创建筛选器jakarta,可执行文件为C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector\bin\isapi_redirect.dll(根据安装路径不同而不同),点“确定”返回,正常的话你会看到该筛选器前面有个绿色箭头。
第四步,打开IIS的“WEB服务扩展”,新建一个扩展,扩展名为JSP,要求的文件为:C:\Program Files\Apache Software Foundation\Jakarta Isapi Redirector\bin\isapi_redirect.dll(根据安装路径不同而不同),并将该扩展设置为允许(状态显示为绿色√)。
第五步,配置Jakarta的配置文件。在Jakarta Isapi Redirector安装目录的conf目录下默认会有uriworkermap.properties、workers.properties.minimal两个文件,将workers.properties.minimal更改为“workers.properties”并编辑:
# 工作站的名称任意,但须注意前后一致,多个工作站以“,”分割
worker.list=wlb,jkstatus,ajp13w
# 工作站的类型:ajp13是IIS与Tomcat通讯协议的名称
worker.ajp13w.type=ajp13
# 注意此处的host需要与主机或者设置域名的名称一致
worker.ajp13w.host=www.host1.com
# worker.ajp13w.host=localhost
# ajp13协议的通讯端口
worker.ajp13w.port=8009
再打开uriworkermap.properties文件写转发规则:
#当前域名下将所有JSP文件转发给Tomcat
/*.jsp=wlb
# 当前域名下,除了.html的请求,其他都转发给ajp13w工作站处理
# !/*.html
# 当前域名下的所有请求都转发给ajp13w工作站处理
# /*=ajp13w
然后重启IIS跟tomcat即可。