前言
之前说过用Apache
和Nginx
做代理来访问Tomcat
中的项目.
现在因工作需要 只能用IIS作为Web服务器来把请求转发到Tomcat
我现在知道的共有四种实现方式
- 使用
isapi_redirect.dll
实现 - Weblogic的插件包中的
iisforward.dll
、iisproxy.dll
来实现 ARR(Application Request Routing)
HttpPlatformHandler
我最终使用的是第三种方式 下面说一下各个方式的优缺点
- 第一种方式需要修改注册表(网上说的也可以不用添加注册表 我通过这种方式没有成功)
- 第二种方式 新版本的
Weblogic
的插件包中不包含iisforward.dll - 第三种只支持IIS7以上
- 第四种 相当于 Tomcat由IIS托管 不但要配置IIS 还有修改Tomcat的默认配置 所以不建议
安装软件
在Win10以下的系统中直接在官网下载ARR和Microsoft URL 重写模块 2.0 安装就可以了
但是 他要求的IIS7
以上 却不能识别Win10
上的IIS10
但其实是能用的
这里放出我修改过的安装包ARR和Microsoft URL 重写模块 2.0
安装之后重启iis
代码语言:javascript复制iisreset
配置
安装完成后 在服务器级别的功能试图中 会多出两项
Application Request Routing
URL重写
网站级别的功能试图中 会多一项
URL重写
点击 Application Request Routing
后
点击右边的Server Proxy Settings
勾选Enable proxy
后 点击右侧的应用
点击项目级别的功能试图中的URL重写
首先需要知道的是
IIS不能配置如Apache中的ProxyPassReverseCookiePath /yxemail /
来矫正Cookie的路径
所以IIS配置反向代理的时候就不能带项目名 带项目名就会导致Session失效
也就是说IIS做反向代理 又要考虑Session 就必须去掉Tomcat中项目访问链接中的项目名
Tomcat中要配置一个HOST
IIS中要配置URL地址的入站规则 和 HTTP响应头或内容的出站规则
配置Tomcat
代码语言:javascript复制<Host name="www.aaa.com" appBase="C:/Program Files/Tomcat 7.0/webapps_me" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="yxemail" debug="0"/>
</Host>
需要注意的是 appBase
一定要换一个路径 因为每个Host
中 appBase
中的项目 在Tomcat
启动时会重新加载
所以多个Host
中的appBase
一样的话 就会导致一个项目被加载多遍
这样 网站目前可以用www.aaa.com:8080
访问
配置IIS
添加一个网站 主机名设置为www.aaa.com
端口80
点击 URL重写
入站规则
添加规则 选择入站规则
中的空白规则
设置项名称 | 设置项内容 |
---|---|
名称 | 随便写 |
模式 | (.*) |
条件 | {SERVER_PORT}设置为80{HTTP_HOST}设置为www.aaa.com |
重写URL | http://www.aaa.com:8080/{R:0} |
出站规则
所谓的出站规则就是返回的html内容
根据规则替换里面的url
添加规则 选择出站规则
中的空白规则
设置项名称 | 设置项内容 |
---|---|
名称 | 随便写 |
匹配范围 | 响应 |
匹配一下范围中的内容 | 除自定义外全选 |
模式 | (.):8080/(.) |
操作类型 | 重写 |
操作属性 | http://www.aaa.com/{R:2} |
这样的话就能用www.aaa.com
来访问www.aaa.com:8080
的网站了