IIS和tomcat共用80端口( isapi_redirect.dll方法)同一个服务器建立多个80端口网站的方法 —— tomcat-connector的isapi_redirct.dll插件
IIS和tomcat共用80端口(isapi_redirect.dll)
(同一个服务器建立多个80端口网站的方法)
背景:
很多时候,我们需要在一台服务器上部署多个网站并解析域名,但是域名访问默认是80端口,所以就需要解决一台服务器公用80端口的问题,下面我就向大家介绍一下配置过程。
很多机器都需要同时使用tomcat和iis两个服务器以部署不同的网站,而解决共用80端口的问题也经常遇到,今天实际操作了一回,以下是具体步骤
原理:
在IIS中使用isapi_redirct.dll转发给tomcat处理
转发过程:Tomcat非80端口正常运行时;IIS任意一个80端口的网站新增一个虚拟目录(绑定Tomcat的域名),通过isapi_redirct.dll的配置文件指向Tomcat。
环境:
Windows 2008R2, iis7, Apache-Tomcat-8.5.27
前提条件:已经正确安装了IIS和Tomcat,且两者独立使用时,网站都可以正常运行。
即:http://127.0.0.1/能够访问IIS下部署的80站点,http://127.0.0.1:8080/能够正常访问Tomcat下部署的8080站点。
(没有的话,请先将网站调通再进行下一步)
注意:tomcat是用8083(非80端口),而IIS中的用80端口。
<Connector port="8083" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
配置计划:
首先列出我们需要做的事项:
一、下载tomcat-connector的dll
二、创建两个目录,一个用于iis建立网站,一个用于创建jakarta虚拟目录
三、创建3个properties文件
四、iis设置映射关系配置
4.1 IIS根目录:【ISAPI和CGI限制】添加dll路径 和 勾选处理程序映射的全部权限
4.2 IISConn网站:创建网站并添加jakarta虚拟目录
4.3 IISConn网站: 【ISAPI筛选器】添加dll路径 和 添加JSP支持(处理程序映射)
一、下载tomcat-connector的dll文件
下载isapi_redirct.dll文件
在tomcat官方完全可以下载,会得到isapi_redirect.dll
下载地址: https://tomcat.apache.org/download-connectors.cgi
下载地址2(直达):http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/
特别注意,32位及64位系统使用对应的dll,否则会出现类似 调用GetFilterVersion失败 这样的异常
x86&64位使用(32&64位推荐):tomcat-connectors-1.2.49-windows-x86_64-iis.zip
32位i386(Intel_80386的1985年旧架构):tomcat-connectors-1.2.49-windows-i386-iis.zip
{版本号可能会有略微变化,因为一直在更新中}
解压得到我们的最关键文件:isapi_redirect.dll:
二、创建目录
创建如下目录结构:
最好在Tomcat安装目录的路径(下面统一称为【tomcat_home】) 下创建目录 {bin、conf、WebApps文件夹的上级目录}。
目录1:IISConn 目录,用于存放workers.properties和uriworkermap.properties,最后将用于IIS建立网站;
目录2:IISConn\jakarta\目录,用于放置isapi_redirect.properties和isapi_redirect.dll,最后将用于创建jakarta虚拟目录。
Tomcat目录假设为:D:\ApacheTomcat\Tomcat8.5\ |
文件 |
IISConn的目录则应该是:D:\ApacheTomcat\Tomcat8.5\IISConn\ |
workers.properties |
jakarta的目录:D:\ApacheTomcat\Tomcat8.5\IISConn\jakarta\ |
isapi_redirect.dll isapi_redirect.properties |
目录结构很重要,如果isapi_redirect.properties没有存放到jakarta目录,会出现GetFilterVersion失败的500错误!
(下图的例子是直接在Tomcat安装目录下创建一个IISConn文件夹,打开IISConn文件夹后再创建一个jakarta文件夹)
假设我们已经创建好了这两个文件夹,进入下一步。
三、创建并配置3个.properties配置文件
文件:1:uriworkermap.properties
文件内容如下
1
|
/testiisconn/*=testiisconn
|
examples 是Tomcat默认的一个项目名称; testiisconn 可以看作是一个变量,用于
问题处理:如果这样配置在最后输入域名访问到的是IIS页面(或IIS的错误提示)的话,就重新配置成如下:
1
|
/*=testiisconn #必须要 |
文件uriworkermap.properties简化为:
/*=testiisconn ##说明:uriworkermap.properties的最简化配置 #这个地方,=前面为tomcat的项目名称,后面为worker.list的名称,如下面就是映射 http://localhost:8080/tomcatprojectname/这个tomcat网站的 #如果不加项目名:/*=testiisconn 会映射tomcat的所有项目
意思是去这个域名下面的所有文件转发给tomcat处理,tomcat的所有项目
说明:等号左边是路径规则,符合此规则的就通过Connector转发给tomcat。比如说在浏览器上访问 http://localhost/examples/,符合 /example/*的规则,那么它就会转发给Tomcat对应的worker,转发目标worker名称为examples
等号右边即是workers.properties文件定义的worker
文件:2:workers.properties
文件内容如下
1
|
workers.tomcat_home=E:/Apache-Tomcat/Tomcat8 //自己tomcat的路径(可以看到bin文件夹)
|
文件workers.properties 可以简化为:
workers.tomcat_home=E:/Apache-Tomcat/Tomcat8 //自己tomcat的路径 workers.java_home=C:/Program Files/java/jdk.1.8.0_131 //你的jdk的路径 ## 注意:这里的斜杆与Windows目录的\相反,复制过来要修改! #testiisconn 可以看作是一个局部变量的标志符号 worker.list=testiisconn #下方的ajp13、localhost、8009等都是默认的,可以去除掉
文件:3:isapi_redirect.properties
(与dll文件同名,仅扩展名不同)
文件内容如下
1
|
extension_uri=/jakarta/isapi_redirect.dll
|
在【tomcat_home】/conf/ 文件夹下面(isapi_redirect.dll文件在里面), 新建立一个与dll文件名相同,扩展名为properties的配置文件,即:isapi_redirect.properties,isapi_redirector.dll初始化时,默认会在自己所在的目录寻找同名的配置文件,如果没有再到注册表中读取配置信息.
isapi_redirect.properties的内容。
特别特别特别注意
isapi_redirect.properites的文件需要注意编码问题,在本次测试中我使用ansi编码才行,之前使用utf-8编码存储的时候,发生调用 GetFilterVersion 失败
四、配置IIS(配置ISAPI筛选器 和 配置处理程序映射JSP)
因为公用80端口的这个方法是通过iis来转发给tomcat的,所以需要配置IIS
主要工作:对IISConn目录创建一个网站,然后对jakarta目录创建一个虚拟目录。
4.1、对IIS的根节点(服务器)进行配置(localhost)
IIS根目录:【ISAPI和CGI限制】添加dll路径 和 勾选处理程序映射的全部权限
1.打开IIS,点击计算机名这个节点,即最顶端那个节点(“起始页”下面的第一个——根节点) :
2.在中间区域框中找到【ISAPI和CGI限制】,双击它打开功能
3.双击【ISAPI和CGI限制】后,在右边框点击【添加】
信息如下:
ISAPI或CGI路径(I): 在右边...按钮选择,是【tomcat_home】\IISConn\jakarta\isapi_redirect.dll
描述: jakarta //也可以是其他,如TomcatISAPI
允许执行扩展路径(A):要勾选 ✔
4. 另外,再次点击IIS的根节点,添加【处理程序映射】权限
在中间区域框找到【处理程序映射】,双击打开它; 然后在右边操作框找到【编辑功能权限】,将所有的权限都勾选上。
4.2、 创建跳转网站并建立虚拟目录
A, 为Tomcat创建一个IIS网站,命名为IISConn
网站名称建议设置为 IISConn (可以修改,建议就用这个)
1. 在IIS的界面上,展开到网站层, 在【网站】上点右键,【添加网站】,如下图:
2.配置网站
网站名称: IISConn
物理路径: 【tomcat_home】\IISConn \\IISConn文件夹的路径
绑定 ip地址:全部未分配 ; 主机名:Tomcat的域名
B, 为网站创建jakarta虚拟目录
创建虚拟目录
在这个网站下,对jakarta目录创建一个虚拟目录。
“添加虚拟目录”的配置: 【虚拟目录的别名必须用这个jakarta】
别名: jakarta
物理路径:【tomcat_home】\IISConn\jakarta \\jakarta文件夹的路径
4.3、 对新建的跳转网站做配置
A. 为IISConn网站配置ISAPI筛选器
1. 在IIS的界面上,展开到网站层级,找到我们刚刚创建的网站【IISConn】节点
2. 在中间区域框找到【ISAPI筛选器】,双击打开它
3. 双击【ISAPI筛选器】后,在右边框点击【添加】
配置如下: 名称与上面的虚拟目录名称一致,都是jakarta
筛选器命名(F):jakarta //也可以是其他,如TomcatISAPI
可执行文件(E):选择【tomcat_home】\IISConn\jakarta\isapi_redirect.dll
B. 为IISConn网站添加 JSP 支持
再次进入【IISConn】网站,为jsp格式添加【处理程序映射】权限
a, 在中间区域框找到【处理程序映射】,双击打开它;
b,点击最右侧操作栏的“添加模块映射”
因为我们在中间区域的清单里,我们没有发现*.jsp,所以需要为jsp添加管理处理程序。
c,可以参考下方截图,填写相关信息
添加模块映射:
请求路径: *.jsp //必须保持一致
模块: IsapiModule //可以输入一半下拉选择
可执行文件: 【tomcat_home】\IISConn\jakarta\isapi_redirect.dll (同上面的dll路径)
名称:jsp //名称也可以根据自己的喜好设置
d,(可选)最后检查一下最右边操作框找到【编辑功能权限】,是否已经勾选了所有的权限
正常情况下,应该都是已经勾选上的(因为在服务器的根节点已经做了类似的操作)。
完成。
测试
1.重新启动IIS和tomcat
2.访问你的域名,正常的话是可以访问,那就成功了,如果显示的页面是IIS页面,那就按我上面的那一个【配置uriworkermap.properties文件,重新配置一下】重新配置
3.如果还是访问不到,那就域名+你的项目名,访问正常的话就OK了,那就去tomcat配置一下你的context内容
总结 & 常见问题
整个过程有很多误区:
误区包括:
1、是否需要修改注册表:
答,不需要,tomcat docs里面已经明确说明, The redirector will check for the isapi_redirect.properties file during initialisation, and use it in preference to the registry if present,所以isapi_redirect.properties最优先,其次才是注册表,而写注册表非常容易搞错。
需要注意的的是,这个properties文件一定要放在共同目录,否则无效。
2、是否需要设置端口:
答,只有非默认才需要设置,否则不需要设置
默认就是ajp13,localhost,8009,如果有变化你才需要设置,否则work.list后面的的行,全部可以删除。
3、是否需要在tomcat/conf目录放置那些文件:
答:不需要,任意磁盘位置均可
4、出现GetFilterVersion 是由于没有写或修改注册表
答:注册表配置,基本不会成功,请用isapi_redirect.properties文件,更为方便
HTTP 错误 500.0 - Internal Server Error》调用 GetFilterVersion 失败,在 ISAPI 筛选器 "D:\tomcat9\iistomcatconnector\jakarta\isapi_redirect.dll" 上
5、是否需要配置tomcat的server.xml
答:根本不需要
6、是否需要配置iis的jsp映射
答:不需要,dll只按照uriworkermap.properties所配置的规则进行目录映射,比如springboot开发的程序,根本没有扩展名,更无从配置
7、 .properties配置文件中的路径
答: isapi_redirect.properties 与workers.properties和uriworkermap.properties 三个配置文件,中的文件路径都是跟Windows不同的正斜杠/ (而不是反斜杠)。
8、 联系Tomcat网址时出现“服务器错误 403 - 禁止访问: 访问被拒绝。您无权使用所提供的凭据查看此目录或页面。 ”如何解决?
答: 这个错误明显是IIS的报错,可以参考这里的 -->问题解决 。
也可能是没有在IIS里做 “ISAPI和CGI限制” 和 “ISAPI筛选器”,或没有做“处理程序映射”等操作导致的。
·
·